正如标题所说。
我尝试确定给定的图像文件是否具有透明度(非不透明)。
这是正确的方法:
public static boolean hasAlpha(ImageData imageData) {
if (imageData.alpha != -1 || imageData.transparentPixel != -1)
return true;
if (imageData.alphaData == null && imageData.maskData == null)
return false;
if (imageData.alphaData != null)
for (int i = 0; i < imageData.alphaData.length; ++i) {
byte alpha = imageData.alphaData[i];
if (alpha !=0xFF)
return true;
}
if (imageData.maskData != null)
for (int i = 0; i < imageData.maskData.length; ++i)
if (imageData.maskData[i] != 0xFF)
return true;
return false;
}
有没有比通过整个alpha通道(使用我制作的循环)更好的方法?也许一种方法甚至没有将整个图像文件解码成解码的大位图?
答案 0 :(得分:0)
我看到了一些问题。
ImageData.alpha
可以设置为255,这意味着完全不透明,只有0-254透明。
ImageData.alphaData
对于每个字节,只有255的值是完全不透明的。
ImageData.maskData
每个字节的所有位都必须为1,因为掩码是不透明的。
您可能还想要考虑什么?透明&#39;手段。 Alpha值为254表示图像仅略微透明,值为0表示图像根本不可见。