从 onPictureTaken 结果裁剪圆形图像

Posted

技术标签:

【中文标题】从 onPictureTaken 结果裁剪圆形图像【英文标题】:Crop rounded image from onPictureTaken result 【发布时间】:2015-03-16 12:18:51 【问题描述】:

我有以下情况:

我有全屏SurfaceView,在前半部分我有我的圈子,我想从图像裁剪过程中获得最终结果。

以下是我获取位图图像的方法:

 @Override
    public void onPictureTaken(byte[] data, Camera camera)
    
        BitmapFactory.Options opts = new BitmapFactory.Options();
        //opts.inSampleSize = 2;
        Bitmap img = BitmapFactory.decodeByteArray(data, 0, data.length, opts);

//here I have to crop my image to be fit and have the same place like my circle.

谢谢!

【问题讨论】:

【参考方案1】:

有两种方法可以做到这一点

以编程方式:可以使用 getRoundedShapeImage 之类的方法将图像裁剪为圆形。 使用设计:可以使用一个内圆内圆透明的方形图片,然后将其设置为imageView的src并将图片设置为imageView的背景

我认为第二个更好,因为与第一个相比,它会花费更少的时间并且容易。

【讨论】:

感谢您的回复,但不是我想要的。我想要一个比我的“img”位图更小的位图,它的大小与我的可绘制圆圈相同或更接近,并在图像中占据相应部分的圆圈位置【参考方案2】:

您可以使用自定义 circleimageview。

我找到了这个库。 Github链接:https://github.com/hdodenhof/CircleImageView

用法

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/circle_image"
    android:layout_
    android:layout_
    app:border_
    app:border_color="#FF000000"/>

在pictureTaken方法中设置bitmap为圆形imageview后。

CircleImageView iv=(CircleImageView)findViewById(R.id.circle_image);
iv.setImageBitmap(bmp);

【讨论】:

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

如何执行圆形图像裁剪功能

如何在android中以圆形裁剪图像?

裁剪图像并将图像保存为圆形 JCrop

使用 UIImagePickerController Swift 时的圆形图像裁剪

iOS 裁剪圆形图像并显示(类似于微信头像)

UWP:将图像裁剪为圆形