正如標題所說。使用SWT的ImageData,如何判斷一個png,gif,bmp文件是否具有透明度?
我嘗試確定給定的圖像文件是否具有透明度(非透明)。
這是正確的做法:
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通道(使用我製作的循環)?也許甚至沒有將整個圖像文件解碼爲解碼的大位圖?
您可能還需要查看'maskData'中的透明度蒙版數據。 –
@ greg-449它甚至如何使用?無論如何,如果它不是空的,這是否意味着它有alpha?我認爲這只是圖像的一個額外的元數據,要顯示它的一個小版本,不是嗎?所以我認爲不需要檢查。 –
不,它似乎是在主圖像中每個像素具有一個位的位掩碼,其中1位表示alpha是255並且是零alpha 0.通常通過調用ImageData.getTransparencyMask –