1
我有一種方法來更改Java中BufferedImage的Alpha值。這是我的代碼:Java BufferedImage:Alpha變更使低阿爾法區域顯示爲黑色
public static void setAlpha(BufferedImage img, byte alpha) {
alpha %= 0xff;
for (int cx=0;cx<img.getWidth();cx++) {
for (int cy=0;cy<img.getHeight();cy++) {
int color = img.getRGB(cx, cy);
color &= 0x00ffffff;
color |= (alpha << 24);
img.setRGB(cx, cy, color);
}
}
}
當我使用這個功能已經透明圖像的所有區域之前變成黑色。爲什麼?
編輯:
非常感謝您的幫助。現在我明白了,問題是什麼。這是我的工作職能:
public static void changeAlpha(BufferedImage img, float alphaPercent) {
for (int cx=0;cx<img.getWidth();cx++) {
for (int cy=0;cy<img.getHeight();cy++) {
int color = img.getRGB(cx, cy);
byte alpha = (byte) (color >> 24);
alpha = (byte) ((float) (int) (alpha & 0xff) * alphaPercent);
color &= 0x00ffffff;
color |= ((alpha & 0xff) << 24);
img.setRGB(cx, cy, color);
}
}
}
......瘋狂的猜測:因爲'set ** RGB **'只設置紅色,綠色和藍色? – usr2564301
@Jongware可能是錯誤的命名,但沒有。所有'get/setRGB'方法都在sRGB色彩空間中的32位ARGB值上工作。 – haraldK
你的'BufferedImage'是什麼類型? – haraldK