如何从ImageView获取缩放的位图

时间:2011-10-04 12:50:30

标签: android

我有一个Activity,它在图像的XML for Pinch Zoom功能中定义了自定义ImageView。现在,我的问题是我想从Pinch Zoom功能中获取缩放的Bitmap。例如,如果用户对图像进行缩放,那么我想将图像的确切大小和位置存储为位图。

这是我用XML声明的自定义ImageView。

<com.cam.view.PinchZoom_ImageView 
  android:id="@+id/gallery_selected_image_view"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:src="@drawable/icon"
  android:scaleType="center"
 />

更新

我正在尝试下面的代码来获取缩放的图像,但它返回一个空白位图。

        pinchZoom.setDrawingCacheEnabled(true);
        pinchZoom.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        pinchZoom.layout(0, 0, pinchZoom.getMeasuredWidth(), pinchZoom.getMeasuredHeight());
        pinchZoom.buildDrawingCache(true);
        Bitmap_gallery_Item = Bitmap.createBitmap(pinchZoom.getDrawingCache());
        pinchZoom.setDrawingCacheEnabled(false);

任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:12)

好吧,最后我无法相信它只是一行代码。我终于成功使用了matrix。解决方案非常简单,我将图像的translation and scaling存储在矩阵中。所以,我将最终matrix声明为public static并使用该矩阵在画布上创建绘制位图。

        Canvas comboImage = new Canvas(cs);
        background = Bitmap.createScaledBitmap(background, width, height, true);
        comboImage.drawBitmap(background, 0, 0, null);
        comboImage.drawBitmap(foreground, PinchZoom_ImageView.matrix, null);

正如您在此处所见PinchZoom_ImageView.matrix。这是matrix,其中包含我已声明为public static的缩放和翻译图像的最终位置。

答案 1 :(得分:0)

如果您有scaleType="fitxy",则可以使用缩放系数来放大或缩小ImageView的宽度/高度 - 这也意味着您可以拉回图像的精确高度/宽度,因为它具有与容器尺寸相同。

HTH

答案 2 :(得分:0)

这篇文章包括从图库中裁剪图像,并允许用户裁剪图像并在ImageView中保存裁剪的图像和节目。

似乎它会帮助你扩展

Image Crop and show cropped Image in View