java - 如何使用 Java 加载图像并向其中写入文本?

标签 java image text merge arrays

我的 java 项目中有一个位于 images/image.png 的图像。我想写一个方法,其签名如下

byte[] mergeImageAndText(String imageFilePath, String text, Point textPosition);

此方法将加载位于 imageFilePath 和图像位置 textPosition(左上)的图像,我想写入 text ,然后我想返回一个表示与文本合并的新图像的 byte[]。

最佳答案

试试这个方法:

import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class ImagingTest {

    public static void main(String[] args) throws IOException {
        String url = "http://icomix.eu/gr/images/non-batman-t-shirt-gross.jpg";
        String text = "Hello Java Imaging!";
        byte[] b = mergeImageAndText(url, text, new Point(200, 200));
        FileOutputStream fos = new FileOutputStream("so2.png");
        fos.write(b);
        fos.close();
    }

    public static byte[] mergeImageAndText(String imageFilePath,
            String text, Point textPosition) throws IOException {
        BufferedImage im = ImageIO.read(new URL(imageFilePath));
        Graphics2D g2 = im.createGraphics();
        g2.drawString(text, textPosition.x, textPosition.y);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(im, "png", baos);
        return baos.toByteArray();
    }
}

关于java - 如何使用 Java 加载图像并向其中写入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540376/

相关文章:

java - java中将字符串分配给变量和直接使用引号之间的内存分配差异

java - "Not supported for DML operations"使用简单的 UPDATE 查询

java - 通过类路径 Spring 访问 war tomcat 中依赖项 jar 中的属性文件

text - 如何在冒号后对齐文本

python - 将打印输出重定向到 Python 中的 .txt 文件

java - JSON-B 将日期字符串反序列化为 joda DateTime 而不更改模型类

c++ - C++快速输出图片的方法

javascript - 调整图像大小以完美适合容器

php - 如何使用 PHP 为图像添加阴影?

c - C 中的文本文件到数组