簡體   English   中英

使用setRGB設置0-255值而不是十六進制代碼值

[英]Using setRGB to set 0-255 values instead of hex code values

我目前正在使用.setRGB()方法。 看來int[] rgbArray的輸入是十六進制代碼值,這是非常大的整數值。 我目前有一組范圍在0到255之間的整數,因此,每當我使用.setRGB輸入它們時,圖像都是純黑色的,考慮到十六進制值與RGB值的范圍,這是有意義的。

我想知道是否可以使用非十六進制值?

不是十六進制; 它是位經過處理的RGB。 我將使用java.awt.Color ,然后調用getRGB() 所以,

int rgb = new Color(red, green, blue).getRGB();

正如在另一個答案中提到的那樣,您所談論的“大值”是顏色的R,G,B組合分量,可能還有“ Alpha”分量。

因此,使用setRGB方法將值設置為255應該會導致該像素變成藍色, 除非它是具有alpha通道的圖像。 在這種情況下,它將變成完全透明的藍色(也稱為“黑色”)。

但是,當您擁有介於0到255之間的value時,可以將其轉換為RGB值(0 =黑色且255 =白色),如下所示:

int value = ...
int rgb = (255 << 24) | (value << 16) | (value << 8) | value;

(此處的Alpha分量設置為255。對於沒有Alpha通道的圖像,這不會做任何更改。但是對於具有Alpha通道的圖像,這對於確保顏色實際可見至關重要)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM