getRGB方法返回單個int。我怎樣才能單獨獲得紅色,綠色和藍色的顏色全部爲0到255之間的值?Java BufferedImage單獨獲取紅色,綠色和藍色
46
A
回答
69
Java的Color類可以做轉換:
Color c = new Color(image.getRGB());
int red = c.getRed();
int green = c.getGreen();
int blue = c.getBlue();
7
你需要一些基本的二進制算術它分裂:
int blue = rgb & 0xFF;
int green = (rgb >> 8) & 0xFF;
int red = (rgb >> 16) & 0xFF;
(也可能是其他的全面,老實說,我不記得,文檔也沒有給我一個即時答案)
+0
我相信你是對的。 – HyperNeutrino 2015-07-05 21:19:30
105
一個像素由一個4字節(32位)整數表示,如下所示:
00000000 00000000 00000000 11111111
^ Alpha ^Red ^Green ^Blue
因此,要獲得各個顏色成分,你只需要一個位二進制算術:
int rgb = getRGB(...);
int red = (rgb >> 16) & 0x000000FF;
int green = (rgb >>8) & 0x000000FF;
int blue = (rgb) & 0x000000FF;
這確實是什麼java.awt.Color
類的方法做:
553 /**
554 * Returns the red component in the range 0-255 in the default sRGB
555 * space.
556 * @return the red component.
557 * @see #getRGB
558 */
559 public int getRed() {
560 return (getRGB() >> 16) & 0xFF;
561 }
562
563 /**
564 * Returns the green component in the range 0-255 in the default sRGB
565 * space.
566 * @return the green component.
567 * @see #getRGB
568 */
569 public int getGreen() {
570 return (getRGB() >> 8) & 0xFF;
571 }
572
573 /**
574 * Returns the blue component in the range 0-255 in the default sRGB
575 * space.
576 * @return the blue component.
577 * @see #getRGB
578 */
579 public int getBlue() {
580 return (getRGB() >> 0) & 0xFF;
581 }
6
對於簡單顏色操作,你可以使用
bufImg.getRaster().getPixel(x,y,outputChannels)
outputChannels是一個用於存儲獲取像素的數組。它的長度取決於圖像的實際通道數。例如,RGB圖像有3個通道; RGBA圖像有4個通道。
該方法有3種輸出類型:int,float和double。 要獲取顏色值範圍從0到255,您的實際參數outputChannels應該是一個int []數組。
相關問題
- 1. 處理js紅色()綠色()藍色()
- 2. 使用Color.brighter方法打印紅色,綠色和藍色值
- 3. 從Android顏色對象獲取紅色,藍色或綠色通道
- 4. RGBApixel'沒有成員名爲...紅色藍色和綠色
- 5. 刪除圖像的藍色和綠色
- 6. opencv將黑色和白色轉換爲綠色和藍色
- 7. 地塊所有紅色和綠色
- 8. .Net Reflector紅色和綠色方塊
- 9. 如何獲得給定顏色代碼(藍色)的匹配顏色(紅色和綠色)
- 10. 值紅色/黃色/綠色(如何?)
- 11. 畢加索在頂角上顯示藍色的紅色和綠色箭頭
- 12. iOS:UIColor不尊重紅色,綠色,阿爾法,藍色。顯示其他顏色?
- 13. BufferedImage:紅色顯示爲灰色
- 14. jquery下拉列表都獲得顏色綠色時selecet紅色
- 15. 如何在畫布中填充不同顏色的所有圈子:紅色,黃色,藍色和綠色?
- 16. Android中換入紅色和藍色
- 17. Esp8266藍色和紅色不斷在
- 18. BufferedImage當我說紅色時畫白色
- 19. 什麼是紅色/綠色測試?
- 20. 將綠色轉換爲紅色
- 21. 如何將JPG圖像讀入3個矩陣:紅色,綠色,藍色?
- 22. HTML顏色代碼:紅色到黃色到綠色
- 23. 藍綠色轉換策略
- 24. 指定的前景色無效:「default」。預計的(黑色,紅色,綠色,黃色,藍色,品紅色,青色,白色)
- 25. 阿爾法混合紅色,藍色和綠色圖像產生一個圖像有色任何rgb值?
- 26. 用於C++的顏色地圖庫,可將給定值轉換爲紅色,綠色和藍色值
- 27. 當語法(iePURPLE或PURPAL)錯誤時,如何從csv文件分組顏色(藍色,綠色,紫色,紅色)?
- 28. 像油漆一樣添加顏色(顏色)(藍色+黃色=綠色等)
- 29. PHP和Django:Nginx,FastCGI和綠色獨角獸?
- 30. 分別使用OpenCV for Android應用程序顯示紅色藍色和綠色值
爲圖像的每個像素創建一個新的Color實例會產生大量垃圾,並且效率非常低。如果您打算處理圖像的每個像素,使用'bufferedImage.getRGB(x,y)'獲得每個像素的RGB顏色效率更高,並按照答案中的描述提取紅色,綠色和藍色分量由JoãoSilva提供。 – Marco13 2017-12-12 15:36:11