Java-将文本写入图像,然后写入输出文件

TNC*_*TNC 5 java swing text image

我有一个图像,我想在其上面写有多行,中心对齐和动态(可变宽度)的文本.我尝试过使用这个drawString方法Graphics,但我无法使中心和动态定位工作.我目前正在swing图书馆里闲逛JLabels等等,但我很难找到一个相对简单的方法.我也希望将最终图像写入文件,但似乎ImageIOJPanels 混合效果不是很好..我现在只得到一个黑盒子......如果有人能提供一个简单的轮廓如何处理这个问题,我将非常感激.

谢谢!


对不起,我应该更具体..我希望文本本身是中心对齐的(因为在每行的中间应该对齐),而不是将文本放在图像的中心.文本将放置在图像上的其他位置,而不是中间.我再次为不清楚的描述道歉.谢谢!

roa*_*chs 8

如果你只想生成图像文件,你根本不需要摆动.

你可以这样做:

import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.IOException;

BufferedImage img = ImageIO.read(new File("dog.jpg")); // try/catch IOException
int width = img.getWidth();
int height = img.getHeight();

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bufferedImage.createGraphics();

// draw graphics
g2d.drawImage(img, 0, 0, null);
g2d.drawString(text, x, y);

g2d.dispose();

try {

// Save as PNG
File file = new File("newimage.png");
ImageIO.write(bufferedImage, "png", file);

// Save as JPEG
file = new File("newimage.jpg");
ImageIO.write(bufferedImage, "jpg", file);

} catch (IOException e) { }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅:

http://www.exampledepot.com/egs/javax.imageio/Graphic2File.html

可以使用FontMetrics类完成文本对齐和居中.