diff options
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/common/BitmapUtils.java | 16 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/ImageCacheRequest.java | 7 |
2 files changed, 22 insertions, 1 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/BitmapUtils.java b/gallerycommon/src/com/android/gallery3d/common/BitmapUtils.java index df9b93fbd..29f86e056 100644 --- a/gallerycommon/src/com/android/gallery3d/common/BitmapUtils.java +++ b/gallerycommon/src/com/android/gallery3d/common/BitmapUtils.java @@ -114,6 +114,8 @@ public class BitmapUtils { public static Bitmap resizeDownToPixels( Bitmap bitmap, int targetPixels, boolean recycle) { + if (bitmap == null) return null; + int width = bitmap.getWidth(); int height = bitmap.getHeight(); float scale = (float) Math.sqrt( @@ -138,7 +140,7 @@ public class BitmapUtils { } private static Bitmap.Config getConfig(Bitmap bitmap) { - Bitmap.Config config = bitmap.getConfig(); + Bitmap.Config config = (bitmap != null ? bitmap.getConfig() : null); if (config == null) { config = Bitmap.Config.ARGB_8888; } @@ -147,6 +149,8 @@ public class BitmapUtils { public static Bitmap resizeDownBySideLength( Bitmap bitmap, int maxLength, boolean recycle) { + if (bitmap == null) return null; + int srcWidth = bitmap.getWidth(); int srcHeight = bitmap.getHeight(); float scale = Math.min( @@ -157,6 +161,8 @@ public class BitmapUtils { // Crops a square from the center of the original image. public static Bitmap cropCenter(Bitmap bitmap, boolean recycle) { + if (bitmap == null) return null; + int width = bitmap.getWidth(); int height = bitmap.getHeight(); if (width == height) return bitmap; @@ -173,6 +179,8 @@ public class BitmapUtils { public static Bitmap resizeDownAndCropCenter(Bitmap bitmap, int size, boolean recycle) { + if (bitmap == null) return null; + int w = bitmap.getWidth(); int h = bitmap.getHeight(); int minSide = Math.min(w, h); @@ -203,6 +211,8 @@ public class BitmapUtils { } public static Bitmap rotateBitmap(Bitmap source, int rotation, boolean recycle) { + if (source == null) return null; + int w = source.getWidth(); int h = source.getHeight(); Matrix m = new Matrix(); @@ -261,6 +271,8 @@ public class BitmapUtils { } public static byte[] compressBitmap(Bitmap bitmap) { + if (bitmap == null) return null; + ByteArrayOutputStream os = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, COMPRESS_JPEG_QUALITY, os); @@ -281,6 +293,8 @@ public class BitmapUtils { } public static byte[] compressToBytes(Bitmap bitmap, int quality) { + if (bitmap == null) return null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(65536); bitmap.compress(CompressFormat.JPEG, quality, baos); return baos.toByteArray(); diff --git a/src/com/android/gallery3d/data/ImageCacheRequest.java b/src/com/android/gallery3d/data/ImageCacheRequest.java index 104ff4839..0accd3f27 100644 --- a/src/com/android/gallery3d/data/ImageCacheRequest.java +++ b/src/com/android/gallery3d/data/ImageCacheRequest.java @@ -75,9 +75,16 @@ abstract class ImageCacheRequest implements Job<Bitmap> { bitmap = BitmapUtils.resizeDownBySideLength(bitmap, mTargetSize, true); } + if (bitmap == null) { + return null; + } if (jc.isCancelled()) return null; byte[] array = BitmapUtils.compressBitmap(bitmap); + if (array == null) { + return null; + } + if (jc.isCancelled()) return null; cacheService.putImageData(mPath, mType, array); |