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

标签 java image swing text

我有一张图片,我想在上面写多行、居中对齐和动态(可变宽度)的文本。我试过使用 Graphics 中的 drawString 方法,但无法使居中和动态定位起作用。我目前正在使用 JLabels 等探索 swing 库,但我很难找到一种相对简单的方法。我还想将最终图像写入文件,但似乎将 ImageIOJPanel 混合使用效果不是很好。我得到的只是一个目前是黑盒子。如果有人能提供一个简单的概述来说明如何处理这个问题,我将不胜感激。

谢谢!


抱歉,我应该更具体一些。我希望文本本身居中对齐(因为每行的中间应该对齐),而不是将文本放在图像的中心.文本将放置在图像的其他位置,而不是中间。再次,对于不清楚的描述,我深表歉意。谢谢!

最佳答案

如果你只是想生成图像文件,你根本不需要 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/

相关文章:

java - 如何控制嵌套ArrayList的结构

ios - 如果放置在特定区域则拖放图像调用功能

java - 加载另一个方法时 GUI 组件不会加载

android - 单个 ScrollView 中多个图像的滞后

java - 如何设置JComboBox项目的边框

java - JFrame 中的 JGraph

java - 我可以运行 2 个 Mono 异步 Reactor Core 吗?

java - Lidbgx 从右向左移动对象

java - 比较器 java <E>

image - DICOM标准MONOCHROME1和MONOCHROME2中的图像类型