簡體   English   中英

Java:檢查 BufferedImage 是 BGR 還是 RGB

[英]Java: Check if a BufferedImage is BGR or RGB

我有一個索引圖像,我正在嘗試檢查bufferedImage是否具有 RGB 或 BGR 顏色空間。

ColorModel colorModel = bufferedImage.getColorModel();
if(colorModel instanceof IndexColorModel) {
   // check if the color space for the buffered image is BGR or RGB
}

我嘗試使用bufferedImage.getType() ,不幸的是, getType()方法返回TYPE_BYTE_INDEXED 如何檢查這種bufferedImage的色彩空間?

不幸的是,無法區分來自未知來源的 RGB 和 BGR 顏色空間通道,這只是用戶必須作為輸入提供的屬性。 圖像結構只是一個三層/四層(取決於圖像是否包含 alpha 層)具有 [0-255] 范圍內的整數值,並且很難根據這些像素值確定顏色空間。 我不確定是否有可以解決這個問題的算法,但在所有情況下它都會有一個錯誤率(取決於圖像復雜性)。 就我而言,讓用戶決定圖像的性質是安全的。

我不確定,但從 API 文檔來看:( http://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html#TYPE_BYTE_INDEXED

IndexColorModel 將圖像中的索引映射到真實顏色,它有很多方法可以將紅色、綠色或藍色作為 int 數組( http://docs.oracle.com/javase/7/docs/api/ java/awt/image/IndexColorModel.html ) 也許你可以使用它們。

這意味着可能沒有“RGB”或“BGR”,緩沖圖像中的索引是由索引顏色模型定義的( https://en.wikipedia.org/wiki/Indexed_color

只是在這里猜測,但如果這可以幫助。

暫無
暫無

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

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