如何在Java中从具有透明度的PNG创建图像掩码? 9 月,3 周 Questions & Answers 278 我需要创建一个Java类来从一个透明的PNG图像创建一个图像掩码。我希望尽可能多地使用现成的图像处理库来实现这一点
# 1 楼答案 阅读原始图像 使用新光栅和新颜色模型创建新图像: 一种光栅,它包裹图像的原始数据缓冲区,只是解释方式不同(使用colormodel) 一种颜色模型,每四个字节中取第一个字节,并将其解释为强度李> 原始光栅需要是字节交错光栅,每个像素有四个字节。本例中未进行安全检查 BufferedImage orig = ImageIO.read(new File("temp.png")); DataBuffer dataBuffer = orig.getRaster().getDataBuffer(); ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); int[] nBits = {8}; int[] bOffs = {0}; ColorModel colorModel = new ComponentColorModel(cs, nBits, false, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE); WritableRaster raster = Raster.createInterleavedRaster(dataBuffer, orig.getWidth(), orig.getHeight(), orig.getWidth() * 4, 4, bOffs, null); BufferedImage mask = new BufferedImage(colorModel, raster, false, null);
# 1 楼答案
原始光栅需要是字节交错光栅,每个像素有四个字节。本例中未进行安全检查