前言
在做图片切割时,发现切除来的图片空白部分变成了黑色背景,发现属性是24位深度
解决方案
1.先上代码
BufferedImage image = readImage(url);
BufferedImage bufferedImage = new BufferedImage(width, height, image.getType());
Graphics2D gr = bufferedImage.createGraphics();
//创建、透明背景
bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
gr = bufferedImage.createGraphics();
//重绘
gr.drawImage(image.getScaledInstance(width, height, Image.SCALE_DEFAULT), 0, 0, width, height, null);
gr.dispose();
File file = new File(outFile);
ImageIO.write(bufferedImage, "png", file);
2.主要代码(这一步主要是将创建的空白图片重置为透明png图片)
bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
gr = bufferedImage.createGraphics();
3.其他说明(这一步作保真处理)
image.getScaledInstance(width, height, Image.SCALE_DEFAULT)
4.其他代码
/**
* 图片、读取
*
* @param url
* @return
* @throws Exception
*/
private static BufferedImage readImage(String url) throws Exception {
File file = new File(url);
FileInputStream fis = new FileInputStream(file);
BufferedImage image = ImageIO.read(fis);
return image;
}
网友评论