繁体   English   中英

用Java在图片上打印字符串

[英]Printing String on a picture in Java

我想在java中的现有图片上写一个字符串。 图片为 .jpg 格式。 我使用了下面的代码,唯一的问题是最终图像上有一个红色阴影……就像图像失去了它的真实颜色而变成了浅红色。 请帮我解决这个问题。

    BufferedImage img = ImageIO.read(new File("pic1.jpg"));
    int width = img.getWidth();
    int height = img.getHeight();
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = bufferedImage.createGraphics();
    Font font = new Font("Serif", Font.PLAIN, 96);
    g2d.setFont(font);
    g2d.drawImage(img, 0, 0, null);
    g2d.drawString(text, 100, 250);
    g2d.dispose();

    File file = new File("newimage.jpg");

    ImageIO.write(bufferedImage, "jpg", file);

使用 INT_RGB 而不是 INT_ARGB 你会没事的:

  BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

像这样写代码。 不需要使用 BufferedImage 类来获取图像图形对象。 这只会做你想做的。

BufferedImage img = ImageIO.read(new File("pic1.jpg"));
int width = img.getWidth();
int height = img.getHeight();
Graphics g = img.getGraphics();
Font font = new Font("Serif", Font.PLAIN, 96);

g.setFont(font);
g.setColor(Color.WHITE);
g.drawString(text, 100, 250);
g.dispose();

File file = new File("newimage.jpg");
ImageIO.write(bufferedImage, "jpg", file);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM