From d4b3a8faebfa0b505dc02014041de3625c614d2c Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Wed, 2 Jun 2021 10:24:17 -0400 Subject: [PATCH] Cache set wallpaper as PNG instead of JPEG JPEG is a lossy image format: if image bytes are encoded to JPEG, then the JPEG is decoded to image bytes, those bytes will _always_ differ from the original bytes. Caching as PNG ensures that the same colors will be extracted from the wallpaper as were displayed in the Wallpaper Picker preview using WallpaperColors.fromBitmap. Otherwise, the cached wallpaper differs from the bitmap used with WallpaperColors.fromBitmap for the preview in wallpaper picker. Bug: 189931209 Test: Test tons and tons of wallpapers over a couple days. Change-Id: I041d68bf057b24cf4dbd877ed403a1c2e67904dc --- .../com/android/server/wallpaper/WallpaperManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 6f2d020837f64..53f1035ee4226 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -752,7 +752,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub f = new FileOutputStream(wallpaper.cropFile); bos = new BufferedOutputStream(f, 32*1024); - finalCrop.compress(Bitmap.CompressFormat.JPEG, 100, bos); + finalCrop.compress(Bitmap.CompressFormat.PNG, 100, bos); bos.flush(); // don't rely on the implicit flush-at-close when noting success success = true; }