今天用java BufferedImage 合并图片时出现的这个问题,
最后发现是最后一张图片的宽高超出了限制大小,所以报了这个错。
我要在一张a4大小的图片上加一批二维码图片
合并图片的代码如下:
public void createPicTwo2(int x,int y)
{
try
{
//读取第一张图片
File fileOne = new File("h:\\test.jpg");
BufferedImage ImageOne = ImageIO.read(fileOne);
int width = ImageOne.getWidth();//图片宽度
int height = ImageOne.getHeight();//图片高度
//从图片中读取RGB
int[] ImageArrayOne = new int[width*height];
ImageArrayOne = ImageOne.getRGB(0,0,width,height,ImageArrayOne,0,width);
//对第二张图片做相同的处理
File fileTwo = new File("h:\\img.png");
BufferedImage ImageTwo = ImageIO.read(fileTwo);
int widthTwo = ImageTwo.getWidth();//图片宽度
int heightTwo = ImageTwo.getHeight();//图片高度
int[] ImageArrayTwo = new int[widthTwo*heightTwo];
ImageArrayTwo = ImageTwo.getRGB(0,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);
//生成新图片
BufferedImage ImageNew = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0,0,width,height,ImageArrayOne,0,width);//设置左半部分的RGB
ImageNew.setRGB(x,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
ImageNew.setRGB(x*2,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);//设置右半部分的RGB
File outFile = new File("h:\\out.png");
ImageIO.write(ImageNew, "png", outFile);//写图片
}
catch(Exception e)
{
e.printStackTrace();
}
}
我要在一张a4大小的图片上加一批二维码图片,效果如图: