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

Crop Bitmap using RectF parameters on Android

使用 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()));

但是我得到了 "must be bigger than 0" 错误。在调试时,我注意到由于转换为整数,所有值均为 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

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

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

通过简单地对各种视图进行 "screenshot" 解决了这个问题。这让我得到了一张图片的位图,因为它被放大了

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

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

(int)(zoomCoordinates.left * imageSize)