Imageview显示来自uri的图像非常精细。但我试图从图像中裁剪一部分并使用opencv显示裁剪的部分。
所以我将我的位图对象转换为mat并试图裁剪它,但结果位图没有显示图像
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imgUri);
Utils.bitmapToMat(bitmap, unCropped);
Rect roi = new Rect(Utility.x, Utility.y, Utility.width, Utility.height);
Mat cropped = new Mat(unCropped, roi);
Utils.matToBitmap(cropped,bitmap);
imageView.setImageBitmap(bitmap);
imageView.setVisibility(View.VISIBLE);
我在这里做错了什么?
答案 0 :(得分:0)
你可以像我在我的项目中那样使用手动方法: 它用于圆形图像结果:
public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
int targetWidth = 50;
int targetHeight = 50;
Bitmap targetBitmap = Bitmap.createBitmap(targetWidth,
targetHeight,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(targetBitmap);
Path path = new Path();
path.addCircle(((float) targetWidth - 1) / 2,
((float) targetHeight - 1) / 2,
(Math.min(((float) targetWidth),
((float) targetHeight)) / 2),
Path.Direction.CCW);
canvas.clipPath(path);
Bitmap sourceBitmap = scaleBitmapImage;
canvas.drawBitmap(sourceBitmap,
new Rect(0, 0, sourceBitmap.getWidth(),
sourceBitmap.getHeight()),
new Rect(0, 0, targetWidth, targetHeight), null);
return targetBitmap;
}
所以只做::
imageView.setImageBitmap(getRoundedShape(bitmap));
它会给你一个圆形图像。你可以根据自己的需要进行改变。希望这会有所帮助。 感谢帮助...