从 ImageView 获取裁剪的图像

Posted

技术标签:

【中文标题】从 ImageView 获取裁剪的图像【英文标题】:Getting a cropped image from ImageView 【发布时间】:2012-06-07 17:10:08 【问题描述】:

我使用 ImageView 来裁剪位图。 裁剪后,我想获得裁剪后的图像,但得到的图像与原始图像相同。 有没有办法只获取图像的可见部分?

ImageView iv = new  ImageView(this);                        
iv.setImageBitmap(OriginalBitmap);
iv.setScaleType(ScaleType.CENTER_CROP);
Bitmap CroppedBitmap = ((BitmapDrawable) iv.getDrawable()).getBitmap();

CroppedBitmap 的值与 OriginalBitmap 相同。我怎样才能得到裁剪的?

【问题讨论】:

位图 CroppedBitmap= Bitmap.createBitmap(originalbitmap,bitmap.getWidth()/2 - bitmap.getHeight()/2, 0, bitmap.getWidth()/2 + bitmap.getHeight()/2 , bitmap.getHeight() ); 我能得到什么?我的 OriginalBitmap 减少了一半? 您的确切需求是什么,您必须在哪个维度进行裁剪 好的,我告诉用户选择一张自己的照片。然后在 100x100 ImageView 中绘制该文件。这就是我编写 ScaleType.CENTER_CROP 或其他修饰符的方式。有了这个,我应该让图片放大或缩小并居中。然后我想得到那部分图片。 【参考方案1】:

这个example 为我工作 iv.setDrawingCacheEnabled(true); Bitmap croppedBitmap = iv.getDrawingCache()

【讨论】:

【参考方案2】:

以下代码用于将图像裁剪为 200x200

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
           R.drawable.android);

    int width = bitmapOrg.width();
    int height = bitmapOrg.height();
    int newWidth = 200;
    int newHeight = 200;

    // calculate the scale - in this case = 0.4f
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // createa matrix for the manipulation
    Matrix matrix = new Matrix();
    // resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
                      width, height, matrix, true); 

    // make a Drawable from Bitmap to allow to set the BitMap 
    // to the ImageView, ImageButton or what ever
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

    iv.setImageDrawable(bmd);

【讨论】:

谢谢,但图片比例失调。它变形。我需要像 ImageView.setScaleType(ScaleType.CENTER_CROP) 那样保持比例。

以上是关于从 ImageView 获取裁剪的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何缩放 + 裁剪图像并在 imageview 上显示裁剪的图像

裁剪图像以获取特殊路径

Android:裁剪图像并在 ImageView 上显示

Android:从位图裁剪位图并设置为 ImageView src

为啥我裁剪的图像很小?

在设置为 ImageView 之前在哪里调用裁剪图像