1
我通過Glide轉換對圖像執行轉換,將其設置爲背景以黑色背景,然後將設備另存爲PNG。視圖看起來是這樣的:保存後位圖壓縮顆粒圖像
壓縮它,將其保存爲PNG文件後,它看起來像這樣:
忽略的大小和背景的差異,各地注意顆粒感邊緣。保存後這一點仍然存在。 PNG與原始圖像尺寸相同,因此不進行縮放。我如何防止這種情況發生?壓縮的代碼是:
File file = new File(context.getFilesDir().getPath() + "/" + String.valueOf(num) + ".png");
OutputStream os = null;
try {
os = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
屬性設置爲位圖分別爲:
Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
b.setHasAlpha(true);
事情我已經嘗試:
- 使用WEBP;同樣的問題。
- 保存視圖並構建繪圖緩存 然後保存該位圖。同樣的問題。
- 因爲我需要alpha層,所以無法使用JPEG。
它看起來像壓縮PNG無法處理明亮的顏色。
更新:
使用RGB_565代替ARGB_8888消除顆粒感,但增加了黑色的外面,因爲沒有阿爾法層。似乎壓縮無法處理它,如果有任何alpha像素。
你執行了哪些轉換?附加到問題的源圖像是254x266,您的轉換圖像是180x180。那麼你真的做了一些調整?如果是這樣,你是如何做到的?調整特別是不保存寬高比的調整可能是某些工件的來源。 – SergGr
@sergr模糊變換和一個邊緣檢測。忽略這些的大小。我以互聯網上的這一個爲例。 – ono
還有一件事與調整大小有關:什麼是透明像素的RGB顏色(即如何將黑色轉換爲透明)?如果你做這樣的調整大小可能很重要,請參閱http://www.adriancourreges.com/blog/2017/05/09/beware-of-transparent-pixels/ – SergGr