如题,用Graphics2D合成海报后,遇到色值变红或者黑色的问题。这里,我最终的解决方式是,设置图像为
BufferedImage.TYPE_3BYTE_BGR
类型。
代码
如下,我试图将2.jpg图标贴到邀请海报.jpg指定位置上,通过设置BufferedImage.TYPE_3BYTE_BGR
最终解决了变色问题。
/**
* 导入本地图片到缓冲区
*/
public BufferedImage loadImageLocal(String imgName) {
try {
return ImageIO.read(new File(imgName));
} catch (IOException e) {
}
return null;
}
public static void main(String[] args) throws IOException {
ImageMerging tt = new ImageMerging();
BufferedImage big = tt.loadImageLocal("C:\\Users\\Desktop\\t\\邀请海报.jpg");
BufferedImage small = tt.loadImageLocal("C:\\Users\\Desktop\\t\\2.jpg");
big.setRGB(0, 0, BufferedImage.TYPE_3BYTE_BGR);
small.setRGB(0, 0, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = big.createGraphics();
g.drawImage(small, 320, 600, 272, 219, null);
g.dispose();
ImageIO.write(big, "jpg", new File("C:\\Users\\fang\\Desktop\\7.jpg"));
}