diff options
| author | Byunghun Jeon <bjeon@codeaurora.org> | 2015-11-23 16:48:29 -0800 |
|---|---|---|
| committer | Jay Wang <jaywang@codeaurora.org> | 2015-12-22 17:35:47 -0800 |
| commit | d67e88d910bb451d041e32c02feecee24e562f51 (patch) | |
| tree | 9f63de5b69088ad33c68a4f5bfb88a38ae15887d /src | |
| parent | 9416c8e9845221a9f0be86fd32b7d9d78748006b (diff) | |
| download | android_packages_apps_Gallery2-d67e88d910bb451d041e32c02feecee24e562f51.tar.gz android_packages_apps_Gallery2-d67e88d910bb451d041e32c02feecee24e562f51.tar.bz2 android_packages_apps_Gallery2-d67e88d910bb451d041e32c02feecee24e562f51.zip | |
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
Diffstat (limited to 'src')
3 files changed, 36 insertions, 0 deletions
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); |
