可能是重复问题:
如何在Android中剪裁解析后的图像?
我在我的res/drawable文件夹中有一张图片,我想在将其加载到ImageView中时剪裁(即切出图片的一部分)。然而,我不确定该如何做,请问有什么建议吗?
可能是重复问题:
如何在Android中剪裁解析后的图像?
我在我的res/drawable文件夹中有一张图片,我想在将其加载到ImageView中时剪裁(即切出图片的一部分)。然而,我不确定该如何做,请问有什么建议吗?
从指定源位图的子集返回一个不可变位图。新位图可能是与原始位图相同的对象,也可能是已复制的副本。它的密度与原始位图相同。
将一个位图传递给它,并定义创建新位图的矩形范围。
// Take 10 pixels off the bottom of a Bitmap
Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, 0, 0, originalBmp.getWidth(), originalBmp.getHeight()-10);
originalBmp.getWidth()-1
时才有效。似乎所有的裁剪尺寸都必须完全落在原始图像内,否则将返回原始图像。 - Jannie TheunissenAndroid联系人管理器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);
试试这个:
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);
来自文档:
static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height)
<ImageView android:id="@+id/title_logo"
android:src="@drawable/logo"
android:scaleType="centerCrop" android:padding="4dip"/>
int targetWidth = 100;
int targetHeight = 100;
RectF rectf = new RectF(0, 0, 100, 100);//was missing before update
Bitmap targetBitmap = Bitmap.createBitmap(
targetWidth, targetHeight,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(targetBitmap);
Path path = new Path();
path.addRect(rectf, Path.Direction.CW);
canvas.clipPath(path);
canvas.drawBitmap(
sourceBitmap,
new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight()),
new Rect(0, 0, targetWidth, targetHeight),
null);
ImageView imageView = (ImageView)findViewById(R.id.my_image_view);
imageView.setImageBitmap(targetBitmap);