2012-06-07 80 views
4

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

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

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

+0

位图CroppedBitmap = Bitmap.createBitmap(originalbitmap,bitmap.getWidth()/ 2 - bitmap.getHeight()/2, 0, bitmap.getWidth()/ 2 + bitmap.getHeight()/ 2, bitmap.getHeight() ); – Aerrow

+0

我用这个得到了什么?我的OriginalBitmap减少到一半? – Ton

+0

您的确切需求是什么,您必须裁剪哪个尺寸 – Aerrow

回答

0

作物该图像这下面的代码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); 
+0

谢谢,但图片失去了比例。它变形。我需要保持像ImageView.setScaleType(ScaleType.CENTER_CROP)这样的比例。 – Ton

1

example作品我 iv.setDrawingCacheEnabled(true); Bitmap croppedBitmap = iv.getDrawingCache()