文本到图像的定位 java
Positioning of text to image in java
我编写了一段代码,可以将 .txt 文件中的文本转换为 .jpeg 图像。但我的问题在于:我使用了 drawstring 函数,它只允许我访问图像中文本左下角的坐标。代码是:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
import java.util.*;
import java.awt.font.*;
import java.awt.geom.*;
class TextToImageDemo
{
public static void main(String[] args) throws IOException
{
String sampleText = "SAMPLE TEXT",s="ALPHA";
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader("E:\Java\file.txt"));
while ((sampleText = br.readLine()) != null)
{
System.out.println(sampleText);
s=sampleText;
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (br != null)br.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
String fileName = "Image";
File newFile= new File("./" + fileName + ".jpeg");
Font font = new Font("Stencil", Font.PLAIN, 100);
FontRenderContext frc = new FontRenderContext(null, true, true);
BufferedImage image = new BufferedImage(2000, 200, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
System.out.println(s);
g.setColor(Color.WHITE);
g.fillRect(0, 0, 2000, 200);
g.setColor(Color.BLACK);
g.setFont(font);
g.drawString(s, 800,150);
g.dispose();
try
{
FileOutputStream fos = new FileOutputStream("E:\Java\1111.jpg");
ImageIO.write(image,"jpg",fos);
fos.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
我想要的是将文本集中在 .txt 文件中(无论文本的长度是多少)。背景应该是固定的 (2000 x 200)。文本应该在中心。我如何仅使用左下角的坐标(由 drawstring 函数给出)来实现?
文字说明:单行文字,最大字数=30。
使用字体指标:
FontMetrics fm=g.getFontMetrics();
Rectangle r=new Rectangle(fm.getStringBounds(s, g).getBounds());
g.drawString(s, image.getWidth()/2-r.width/2, image.getHeight()/2-r.height/2);
我编写了一段代码,可以将 .txt 文件中的文本转换为 .jpeg 图像。但我的问题在于:我使用了 drawstring 函数,它只允许我访问图像中文本左下角的坐标。代码是:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
import java.util.*;
import java.awt.font.*;
import java.awt.geom.*;
class TextToImageDemo
{
public static void main(String[] args) throws IOException
{
String sampleText = "SAMPLE TEXT",s="ALPHA";
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader("E:\Java\file.txt"));
while ((sampleText = br.readLine()) != null)
{
System.out.println(sampleText);
s=sampleText;
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (br != null)br.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
String fileName = "Image";
File newFile= new File("./" + fileName + ".jpeg");
Font font = new Font("Stencil", Font.PLAIN, 100);
FontRenderContext frc = new FontRenderContext(null, true, true);
BufferedImage image = new BufferedImage(2000, 200, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
System.out.println(s);
g.setColor(Color.WHITE);
g.fillRect(0, 0, 2000, 200);
g.setColor(Color.BLACK);
g.setFont(font);
g.drawString(s, 800,150);
g.dispose();
try
{
FileOutputStream fos = new FileOutputStream("E:\Java\1111.jpg");
ImageIO.write(image,"jpg",fos);
fos.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
我想要的是将文本集中在 .txt 文件中(无论文本的长度是多少)。背景应该是固定的 (2000 x 200)。文本应该在中心。我如何仅使用左下角的坐标(由 drawstring 函数给出)来实现?
文字说明:单行文字,最大字数=30。
使用字体指标:
FontMetrics fm=g.getFontMetrics();
Rectangle r=new Rectangle(fm.getStringBounds(s, g).getBounds());
g.drawString(s, image.getWidth()/2-r.width/2, image.getHeight()/2-r.height/2);