我想在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);
答案 0 :(得分:6)
使用INT_RGB而不是INT_ARGB,你可以没事:
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
答案 1 :(得分:1)
像这样写代码。不需要使用 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);