在Android上使用RectF参数裁剪位图

时间:2015-05-20 14:32:30

标签: android image bitmap zoom crop

使用MikeOrtiz的awesome ImageView implementation触摸和缩放事件,我想裁剪相机拍摄的照片以匹配变焦。用他的方法......

// Return a Rect representing the zoomed image.
RectF getZoomedRect();

...我尝试将生成的图片位图裁剪为缩放尺寸,如下所示:

RectF zoomCoordinates = mTouchImageView.getZoomedRect();

Bitmap croppedBitmapToOverview = Bitmap.createBitmap(
                AppResources.sCurrentImage,
                ((int) zoomCoordinates.left),
                ((int) zoomCoordinates.top),
                ((int) zoomCoordinates.width()),
                ((int) zoomCoordinates.height()));

但是我得到一个“必须大于0”的错误。调试时我注意到由于转换为Integer,所有值都为0。然而真正的价值观是这样的:

//Log.d print for each of those fields without the int cast
Left 0.34047672
Top 0.20797288
Width 0.33333334
Height 0.3429547

所以这是我的问题,但我看不出如何解决这个问题。我之前从未使用过bitmaps或者canvas,Rect等等。

我是否可以对这些值进行一些调整,或者我应该采取不同的方法?

2 个答案:

答案 0 :(得分:0)

通过简单地查看各种视图的“屏幕截图”来解决问题。这让我得到了一张带有缩放图片的位图

mTouchImageView.setDrawingCacheEnabled(true);
        AppResources.sCurrentImage = Bitmap.createBitmap(mTouchImageView.getDrawingCache());

答案 1 :(得分:0)

将坐标乘以图像大小,例如

(int)(zoomCoordinates.left * imageSize)