※ 本文轉寄自 ptt.cc, 文章原始頁面
Re: [新聞] 別用這照片當手機桌布!恐死當整支掛
手機發文 排版見諒 有缺字請告知
後記:
---
在AOSP裡面找到:
https://bit.ly/2BrUkLP
packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java
其中第115行到127行的方選:
private Bitmap toGrayscale(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap grayscale = Bitmap.createBitmap(width, height, bitmap.getConf
ig());
Canvas canvas = new Canvas(grayscale);
ColorMatrix cm = new ColorMatrix(LUMINOSITY_MATRIX);
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bitmap, new Matrix(), paint);
return grayscale;
}
看來是會將任意色域皆直接用算的算到預設(那就是sRGB),如果原本的Bitmap過大,此種方
式可能會導致一個檔案擁有超過其色階量(X bit)的資訊量,就溢位惹。
例如以下狀況可能導致溢位:
1.8bit色階的sRGB檔,R或G或B卻有500。
2.10bit色階的sRGB檔,R或G或B卻有2000。
解決方案很簡單:
A. 不要改色域,維持原圖檔所屬色域描述。(改只要一秒,但不是好方法)
B. 套用描述,或算式最後套用limiter,讓資訊量不會超過其bitmap。
---
麻瓜化的類遊戲說明方法:
將大世界的地圖轉換為小世界的地圖,結果小世界的地圖塞不下那麼多的城市,所以有些城
市跑到能生成的地圖外面,系統載入這些城市,就會有城市懸浮在虛空之中。玩家如果觸發
了某些條件,可能才會進入設計者沒想到會消失的城市之中,甚至開遊戲時就死當。
---
為何我測ProPhoto RGB to sRGB就沒事,而Java去轉換就出事:
我原先測試時是直接套用.icc的懶人方式去轉換,而不是直接用公式算。描述檔會確保單RG
B最高值不會超過圖檔自身所屬色階,所以用此種方式自己從ProPhoto RGB轉sRGB的檔案不
會有問題。
改成用算式去把ProPhoto RGB的顏色值直接算成sRGB,再硬套進去超過bitmap的資訊量,就
會有此問題。
---
只有設成桌布會出事嗎?
理論上只要將此轉換後產生的圖檔,移轉到其他作業系統中,只要讀取到記憶體可能就會導
致區塊溢位,所以就連看這個圖都可能出事。
---
為何有些Android版本轉換會有事,有些不會:
有直接套用AOSP裡面這個ImageProcessHelper.java的Bitmap toGrayscale的系統,就一定
會有一樣的問題。而把轉換方式重寫的就可能不會有此問題。
---
我在網路上抓桌布圖來設成桌布,會不會有此問題?
在網站中顯示的圖片,99.99%都是sRGB,因此不用擔心。
極少攝影師在最終出圖時會選AdobeRGB或ProPhotoRGB,甚至其他更少見的廣色域描述,因
為大眾螢幕根本顯示不出來,會導致顏色有大幅色差。會將最終檔案設為廣色域描述的,不
是要將檔案交給有同步色彩管理的終端,就是不知道自己在做啥單純就射惹。
而一個8Bit的Jpeg,卻用ProPhotoRGB描述,很可以確定是後者:不知道在做啥,低色階、
高破壞卻套廣色域,黑人問號。
不精確的麻瓜化比喻:你在摩托車裡面加了F1引擎(ProPhotoRGB),八公升的油箱(8bit),
然後傳動組還限制了你最高只能跑到時速120KM(JPG),接著一拜下去車就解體了。
而各大能貼圖的主流社群網站,在張貼時一定會將廣色域全都轉成sRGB,肉眼會大幅可見到
前後顏色落差。從這些網站抓到的圖檔,100%一定是sRGB,不會有任何問題可以安心食用。
---
我在手機拍的照片,會不會可能有此問題?
所有手機原廠相機App拍出來的圖檔一定是sRGB,因此不用擔心。
(因為怕有奇葩的第三方App可以指定廣色域所以只寫原廠)
稍微有一些基礎功能的相機,可以在機身設定中選擇廣色域;影像編輯軟體(如:Photoshop
、Lightroom、Capture One、GIMP)可以指定與編輯廣色域圖檔。因此透過這些相機或軟體
渲染出的圖檔,就有可能遇到此問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.144.33 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1591070699.A.16C.html
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推
推