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

moh*_*945 2 java merge text image bytearray

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

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

此方法将加载位于图像imageFilePath和在位置textPosition欲写入的图像(左上)的text,那么我想返回表示与文本新的图像合并一个字节[].

cam*_*ckr 6

用于ImageIO将图像读入BufferedImage.

使用getGraphics()的方法BufferedImage来获取Graphics对象.

然后您可以使用drawString()Graphics对象的方法.

您可以使用ImageIO保存图像.


Rek*_*kin 6

试试这种方式:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)