From d67e88d910bb451d041e32c02feecee24e562f51 Mon Sep 17 00:00:00 2001 From: Byunghun Jeon Date: Mon, 23 Nov 2015 16:48:29 -0800 Subject: Gallery2: Resize DDM dest buffer for certain image resolutions DDM requires dest buffer to have even width and height. For images that down sample to non-even width and height, resize the dest buffer for DDM to even width and height. Change-Id: I6f895bef2e038770d8f2c443d1d1f042d749227d --- .../filtershow/filters/ImageFilterDualCamFusion.java | 12 ++++++++++++ .../filtershow/filters/ImageFilterDualCamSketch.java | 12 ++++++++++++ .../gallery3d/filtershow/filters/ImageFilterDualCamera.java | 12 ++++++++++++ 3 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java index 86ad45f94..ed3552bd5 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java @@ -108,6 +108,18 @@ public class ImageFilterDualCamFusion extends ImageFilter { filteredW = filteredH; filteredH = tmp; } + + // non even width or height + if(filteredW%2 != 0 || filteredH%2 != 0) { + float aspect = (float)filteredH / (float)filteredW; + if(filteredW >= filteredH) { + filteredW = MasterImage.MAX_BITMAP_DIM; + filteredH = (int)(filteredW * aspect); + } else { + filteredH = MasterImage.MAX_BITMAP_DIM; + filteredW = (int)(filteredH / aspect); + } + } } filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java index 30ce83438..1d8417992 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java @@ -102,6 +102,18 @@ public class ImageFilterDualCamSketch extends ImageFilter { filteredW = filteredH; filteredH = tmp; } + + // non even width or height + if(filteredW%2 != 0 || filteredH%2 != 0) { + float aspect = (float)filteredH / (float)filteredW; + if(filteredW >= filteredH) { + filteredW = MasterImage.MAX_BITMAP_DIM; + filteredH = (int)(filteredW * aspect); + } else { + filteredH = MasterImage.MAX_BITMAP_DIM; + filteredW = (int)(filteredH / aspect); + } + } } filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java index bf9e498b1..59918cf2e 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java @@ -106,6 +106,18 @@ public class ImageFilterDualCamera extends ImageFilter { filteredW = filteredH; filteredH = tmp; } + + // non even width or height + if(filteredW%2 != 0 || filteredH%2 != 0) { + float aspect = (float)filteredH / (float)filteredW; + if(filteredW >= filteredH) { + filteredW = MasterImage.MAX_BITMAP_DIM; + filteredH = (int)(filteredW * aspect); + } else { + filteredH = MasterImage.MAX_BITMAP_DIM; + filteredW = (int)(filteredH / aspect); + } + } } filteredBitmap = MasterImage.getImage().getBitmapCache().getBitmap(filteredW, filteredH, BitmapCache.FILTERS); -- cgit v1.2.3