如何在Java中从具有透明度的PNG创建图像掩码?
我需要创建一个Java类来从一个透明的PNG图像创建一个图像掩码。我希望尽可能多地使用现成的图像处理库来实现这一点。如何在Java中从具有透明度的PNG创建图像掩码?,java,image-processing,png,Java,Image Processing,Png,我需要创建一个Java类来从一个透明的PNG图像创建一个图像掩码。我希望尽可能多地使用现成的图像处理库来实现这一点。 阅读原始图像 使用新光栅和新颜色模型创建新图像: 一种光栅,它包裹图像的原始数据缓冲区,只是解释方式不同(使用colormodel) 一种颜色模型,每四个字节中取第一个字节,并将其解释为强度 原始光栅需要是字节交错光栅,每个像素有四个字节。本例中未进行安全检查 BufferedImage orig = ImageIO.read(new File("temp.png"));
- 阅读原始图像
- 使用新光栅和新颜色模型创建新图像:
- 一种光栅,它包裹图像的原始数据缓冲区,只是解释方式不同(使用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);
请告诉我们您迄今为止尝试了什么,显然他不知道有任何“开箱即用”的类可以尝试使用。获得更多信息确实有帮助。除了遮罩,PNG是否还包含颜色?(就像掷骰子一样)