我試圖從繪制的像素中讀取 RGB 值,但我只得到一個值。當我嘗試獲取 alpha、紅色、綠色和藍色的值時,它總是對每個值都說“0”,除了我實際獲得值的藍色,并且該值始終與“rgb”相同。我的代碼如下所示,如果你們中的任何人能想到解決方案,我將不勝感激。int rgb = image.getRGB(250, 10);rgb = rgb/-65793;System.out.println(rgb);Color f?rg = new Color(rgb, true);int r = f?rg.getRed();int g = f?rg.getGreen();int b = f?rg.getBlue();int a = f?rg.getAlpha();System.out.println(r);System.out.println(g);System.out.println(b);System.out.println(a);打印出來的內容如下:3800380
2 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
不需要對二進制值進行除法。
嘗試這個:
int rgb = img.getRGB(250, 10);
Color color = new Color(rgb);
// get colors (e.g. red)
int red = color.getRed();
System.out.println(red);
// retrieve alpha value via bitshifting
int alpha = (rgb & 0xff000000) >>> 24
System.out.println(alpha);

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
BufferedImage bi = ...;
int x = ..;
int y = ..;
Color converted = new Color(bi.getRGB(x, y));
您不必除以 RGB 值。
添加回答
舉報
0/150
提交
取消