Flutter:将文件(图像)裁剪为圆形

8
我正在尝试在Flutter中裁剪文件(imagefile)。下面是我的代码:

uncropped image

我希望得到如下所示的裁剪后的png图片:

cropped image

为了避免出现白边,重要的是将文件保存为png格式。请问有支持此功能的包吗?

或许你可以使用ClipRRect https://api.flutter.dev/flutter/widgets/ClipRRect-class.html - moonvader
谢谢!但我不需要显示图片,我真的需要裁剪它。 - Karel Debedts
jazzbpn的解决方案有效吗?对我来说,没有UI,canvas.drawImage什么也没画出来... - mrj
3个回答

15
你可以使用BoxDecoration来裁剪在小部件上显示的图像。
Container(
  width: 150,
  height: 150,
  decoration: BoxDecoration(
    shape: BoxShape.circle,
    color: Colors.white,
    image: DecorationImage(
      fit: BoxFit.fill,
      image: AssetImage('assets/image.jpeg'),
    ),
  ),
),

3
这些简单的步骤可以得到所需的结果。
创建一个“PictureRecorder”。
使用您的“PictureRecorder”创建一个画布。
使用“canvas.drawCircle()”在画布中绘制圆形。
在“PictureRecorder”上调用“endRecording()”以获取图片。
在图片上调用“toImage()”。
将图像转换为字节数据。
只有当您想要保存时,才使用“getApplicationDocumentsDirectory()”将图像保存在本地。
完整答案和源代码请参见此处

0

如何在没有小部件的情况下使用软件包进行圆形剪裁,与UI无关?gif显示圆形剪裁仍会生成一个矩形文件。 - mrj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接