添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

解决Java处理png图片时透明背景变黑的问题

// Copy image to buffered image
Graphics2D g = bimage.createGraphics();
// 下面两行解决png透明图片会变黑的问题
bimage = g.getDeviceConfiguration().createCompatibleImage(image.getWidth(null), image.getHeight(null), Transparency.TRANSLUCENT);
g = bimage.createGraphics();
// Paint the image onto the buffered image
g.drawImage(image, 0, 0, null);
                    解决Java处理png图片时透明背景变黑的问题		// Copy image to buffered image		Graphics2D g = bimage.createGraphics();		// 下面两行解决png透明图片会变黑的问题		bimage = g.getDeviceConfiguration().createCompatibleImage(image.getWidth...
				
如果你保存成本地文件,背景真的变黑了,注意是真的!因为,有很多看图软件的背景是黑色的,当png透明,当然也是黑色的,但是,换到ps里,或者其他看图软件中,就看出透明了。 如果真的变黑,原因九成是Bitmap对象在处理的过程中,有一个地方的颜色配置不对,以下生成Bitmap的方法: Bitmap.createBitmap(drawable.getIntrinsicWidth(), draw
在用canvas的toDataURL处理png,发现透明区域被填充成黑色。 为什么canvas会png透明区域转成黑色呢? canvas转换之前移除alpha通道,所以透明区域被填充成了黑色。 但是,我们希望的是,canvas可以将png透明区域填充成白色。 那么怎么将canvas中的透明区域填充成白色呢? 我们有两个方案: 解决方案一:将透明的pixel设成白色 因为png图片背景都是透明的,所以我们 // 创建BufferedImage对象 BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB); // 获取Graphics2D public class TransparentImage { public static void main(String[] args) throws Exception { // 读取原始图片 BufferedImage originalImage = ImageIO.read(new File("original.png")); // 创建一个新的BufferedImage,宽度和高度与原始图片相同,类型为ARGB BufferedImage newImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB); // 获取Graphics2D对象 Graphics2D graphics = newImage.createGraphics(); // 将原始图片绘制到新的BufferedImage中 graphics.drawImage(originalImage, 0, 0, null); // 将指定颜色的像素设置为透明 int transparentColor = Color.WHITE.getRGB(); for (int x = 0; x < newImage.getWidth(); x++) { for (int y = 0; y < newImage.getHeight(); y++) { if (newImage.getRGB(x, y) == transparentColor) { newImage.setRGB(x, y, 0x00000000); // 保存新的图片 ImageIO.write(newImage, "png", new File("transparent.png")); 这段代码可以将名为"original.png"的图片中所有白色像素设置为透明,并保存为"transparent.png"。 Error occurred during initialization of VM Could not reserve enough space for object heap 145283