如何在Android中裁剪图像?

Jam*_*mes 35 android

可能重复:
如何在android中裁剪解析后的图像?

我在res/drawable文件夹中有一个图像,我想在将图像加载到ImageView时裁剪(即切出图像的某些部分)图像.但是我不确定如何做到这一点,有什么建议吗?

小智 39

Bitmap.createBitmap:"从源位图的指定子集返回不可变位图.新位图可以是与源相同的对象,或者可能已经创建了一个副本.它的初始化密度与原始位图相同. "

传递一个位图,并定义将从中创建新位图的矩形.

// Take 10 pixels off the bottom of a Bitmap
Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, 0, 0, originalBmp.getWidth(), originalBmp.getHeight()-10);
Run Code Online (Sandbox Code Playgroud)


rds*_*rds 13

Android联系人管理器EditContactActivity使用Intent("com.android.camera.action.CROP")

这是一个示例代码:

Intent intent = new Intent("com.android.camera.action.CROP");
// this will open all images in the Galery
intent.setDataAndType(photoUri, "image/*");
intent.putExtra("crop", "true");
// this defines the aspect ration
intent.putExtra("aspectX", aspectY);
intent.putExtra("aspectY", aspectX);
// this defines the output bitmap size
intent.putExtra("outputX", sizeX);
intent.putExtra("outputY", xizeY);
// true to return a Bitmap, false to directly save the cropped iamge
intent.putExtra("return-data", false);
//save output image in uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
Run Code Online (Sandbox Code Playgroud)


Sai*_*kat 7

试试这个:

ImageView ivPeakOver=(ImageView) findViewById(R.id.yourImageViewID);

Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.yourImageID);
int width=(int)(bmp.getWidth()*peakPercent/100);
int height=bmp.getHeight();

Bitmap resizedbitmap=Bitmap.createBitmap(bmp,0,0, width, height);
ivPeakOver.setImageBitmap(resizedbitmap);
Run Code Online (Sandbox Code Playgroud)

来自Docs:

static Bitmap    createBitmap(Bitmap source, int x, int y, int width, int height)
Run Code Online (Sandbox Code Playgroud)

从源位图的指定子集返回不可变位图.


Jos*_*emm 6

如果你想同样裁剪图像的外部,你应该检查ImageView的ScaleType属性:http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

特别是,您会对"centerCrop"选项感兴趣.它会裁剪出大于定义尺寸的部分图像.

这是在XML布局中执行此操作的示例:

<ImageView  android:id="@+id/title_logo"
            android:src="@drawable/logo"
            android:scaleType="centerCrop" android:padding="4dip"/>
Run Code Online (Sandbox Code Playgroud)