簡體   English   中英

BitmapFactory 將 PNG 字節解碼為原始數據

[英]BitmapFactory decode PNG bytes to raw data

我正在通過網絡下載圖像數據,顯然它已被壓縮。 在應用程序內部,我需要數據與原始數據 100% 准確。 因此,例如對於 720x720 圖像,我需要一個長度為 518400 的 int 數組或長度為 2073600 的字節數組,其中的值尚未從原始值進行修改。 由於 PNG 壓縮是無損的,這應該是可能的。我注意到 BitmapFactory 在解碼時應用了一些在查看圖像時不明顯的心理視覺效果,但是稍微改變字節值(我假設這是為了速度和/或更好的屏幕視覺效果)。

我目前正在做的是使用 BitmapFactory.decode 然后迭代每個像素以從近似值創建一個新數組並使用 Bitmap.create 創建一個新位圖這是可能的,因為現在圖像是二進制的,並且在原始圖像中每個像素是 (r, g, b, 255) 或 (0, 0, 0, 0)。 我可以找到最流行的顏色,並將所有 alpha 值超過某個閾值的像素設置為這個 RGB 值。 解決方案雖然很慢,而且看起來不必要地復雜。

所以我的問題是 - BitmapFactory.decode 是否有任何選項標志的組合可以返回 100% 真實的原始位圖,還是我必須自己創建一個 PNG 解碼器來實現這一點?

試試這個方法:

val opts = BitmapFactory.Options()
opts.inPremultiplied = false
var bitmapDecode = BitmapFactory.decodeByteArray(decode, 0, decode.size, opts)

暫無
暫無

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

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