2017-10-16 78 views
0

我導出了一張帶有「RommRGB:ISO 22028-2:2013」​​顏色配置文件(在Mac/Affinity Photo中)的JPEG圖像並將其放入res/drawable-nodpi。不幸的是,Android Oreo無法正確識別圖像。Android奧利奧WideColorGamut/ProPhotoRGB不被識別

... 
BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(getResources(), R.drawable.img_01_rommrgb, opts); 

Log.i(TAG, "ColorSpace = " + opts.outColorSpace.getName()); // ===> ColorSpace = Unknown 

opts.inJustDecodeBounds = false; 
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.img_01_rommrgb, opts); 

ColorSpace colorSpace = b.getColorSpace();   // ===> Unknown 
Bitmap.Config config = b.getConfig();    // ===> ARGB_8888 
... 

我也下載了一個ProPhoto.icc,並嘗試過,但我仍然得到一個「未知」的ColorSpace。我也嘗試將圖像放入res/drawable-widecg-nodpi中,但仍然沒有成功。

我認爲,正確的行爲應該是:

  1. 色彩空間應該被正確識別
  2. 位圖應在RGBA_F16加載

也許我用親和了錯誤的顏色配置文件照片。我沒有進一步的想法。任何幫助表示讚賞。

PS:I reported the issue by google

EDIT1

我創建了一個GitHub的項目來演示該問題: Wide-gamut color test

我想,下面的測試案例是不正確的的Android奧利奧處理:

  • 1-d)Romm RGB
  • 1-E)ProPhoto RGB
  • 2-d)羅姆RGB
  • 2-e)中ProPhoto RGB
  • 3-d)羅姆RGB
  • 3-e)中ProPhoto RGB
  • 4- d)羅姆RGB
  • 4-e)中ProPhoto RGB

回答

0

我不得不與Android奧利奧同樣的問題。我將它報告爲Google的一個漏洞,他們要求提供一個可以證明問題的示例應用程序。編寫應用程序導致我對實際問題的理解。該應用的測試版現已在Google Play上以「彩色空間轉換器」的形式提供。

ExifInterface類沒有爲ProfileDescription定義標籤,這使得發現實際問題變得更加困難。當您嘗試爲使用上面列出的任何標籤的文件創建位圖時,它會失敗,且Color.id等於ColorSpace.MIN_ID。唯一有效的標籤是「ROMM RGB ISO 22028-2:2013」​​。在Gimp和exiftool中,該標籤顯示爲Skia圖形引擎的「Google Skia」。