我有一张图片,我想在上面写多行、居中对齐和动态(可变宽度)的文本。我试过使用 Graphics
中的 drawString
方法,但无法使居中和动态定位起作用。我目前正在使用 JLabels
等探索 swing
库,但我很难找到一种相对简单的方法。我还想将最终图像写入文件,但似乎将 ImageIO
与 JPanel
混合使用效果不是很好。我得到的只是一个目前是黑盒子。如果有人能提供一个简单的概述来说明如何处理这个问题,我将不胜感激。
谢谢!
抱歉,我应该更具体一些。我希望文本本身居中对齐(因为每行的中间应该对齐),而不是将文本放在图像的中心.文本将放置在图像的其他位置,而不是中间。再次,对于不清楚的描述,我深表歉意。谢谢!
最佳答案
如果你只是想生成图像文件,你根本不需要 swing。
你可以这样做:
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) { }
有关详细信息,请参阅:
http://www.exampledepot.com/egs/javax.imageio/Graphic2File.html
文本对齐和居中可以使用 FontMetrics 类来完成。
关于Java- 将文本写入图像,然后写入输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745343/