diff options
author | nicolasroard <nicolasroard@google.com> | 2012-10-13 17:24:31 -0700 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2012-10-13 17:24:31 -0700 |
commit | 1c44be4899c454e359cdde0b62f7678c59e0a8fa (patch) | |
tree | 83483139025db452a12335432f263f9da1017e5a | |
parent | b3e8fc2def7b3995c3b558d8594eb573defedf82 (diff) | |
download | android_packages_apps_Snap-1c44be4899c454e359cdde0b62f7678c59e0a8fa.tar.gz android_packages_apps_Snap-1c44be4899c454e359cdde0b62f7678c59e0a8fa.tar.bz2 android_packages_apps_Snap-1c44be4899c454e359cdde0b62f7678c59e0a8fa.zip |
Fix cropping and saving issues
bug:7342359
Change-Id: Ia59eb3f423b8c4f420b7b6f120735856a84cd854
3 files changed, 15 insertions, 6 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java index 9bdffee2e..3d48b7e53 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterGeometry.java @@ -84,9 +84,9 @@ public class ImageFilterGeometry extends ImageFilter { // canvas to do a simple implementation... // TODO: and be more memory efficient! (do it in native?) Rect cropBounds = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); - RectF c = mGeometry.getCropBounds(); - if(c != null && c.width() > 0 && c.height() > 0) - c.roundOut(cropBounds); + RectF crop = mGeometry.getCropBounds(bitmap); + if(crop.width() > 0 && crop.height() > 0) + crop.roundOut(cropBounds); Bitmap temp = null; if (mGeometry.hasSwitchedWidthHeight()) { temp = Bitmap.createBitmap(cropBounds.height(), cropBounds.width(), mConfig); @@ -94,7 +94,7 @@ public class ImageFilterGeometry extends ImageFilter { temp = Bitmap.createBitmap(cropBounds.width(), cropBounds.height(), mConfig); } - Matrix drawMatrix = buildMatrix(c); + Matrix drawMatrix = buildMatrix(crop); Canvas canvas = new Canvas(temp); canvas.drawBitmap(bitmap, drawMatrix, new Paint()); return temp; diff --git a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java index d412f5890..352fa5bf3 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java +++ b/src/com/android/gallery3d/filtershow/imageshow/GeometryMetadata.java @@ -74,10 +74,19 @@ public class GeometryMetadata { return mStraightenRotation; } - public RectF getCropBounds() { + public RectF getPreviewCropBounds() { return new RectF(mCropBounds); } + public RectF getCropBounds(Bitmap bitmap) { + float scale = 1.0f; + if (mPhotoBounds.width() > 0) { + scale = bitmap.getWidth() / mPhotoBounds.width(); + } + return new RectF(mCropBounds.left * scale, mCropBounds.top * scale, + mCropBounds.right * scale, mCropBounds.bottom * scale); + } + public FLIP getFlipType() { return mFlip; } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java index d8d03dc22..68df702ea 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageGeometry.java @@ -122,7 +122,7 @@ public abstract class ImageGeometry extends ImageSlave { } protected RectF getLocalCropBounds() { - return mLocalGeometry.getCropBounds(); + return mLocalGeometry.getPreviewCropBounds(); } protected RectF getLocalDisplayBounds() { |