crop_your_image

一个 Flutter 插件,提供 Crop Widget 用于裁剪图像。

crop_your_image 只提供决定图片内裁剪区域的最小 UI。其他 UI 部分,例如“裁剪”按钮或“更改纵横比”按钮,需要由各应用开发者自行准备。

此策略有助于应用程序开发者以他们自己品牌的设计来构建“裁剪页面”。为了控制裁剪图像的操作,您可以使用 CropController,无论您使用何种 Widgets。

cropyourimage

笔记

请注意,此包正在开发中(甚至尚未达到 alpha 版本)。它没有足够的功能,相当有错误,而且不那么舒适。

基本思想如上所述。我将非常感谢您提出想法或建议以实现它。

用法

Crop小部件放置在您想要放置图像裁剪UI的任何位置。

Widget build(BuildContext context) {
  return Crop(
    image: _imageData,
    aspectRatio: 4 / 3,
    initialSize: 0.5,
    withCircleUi: false,
    onCropped: (image) {
      // do something with image data 
    }
  );
}

每个属性的用法如下所列。

  • imageUInt8List类型的图像数据,裁剪结果可以通过onCropped回调获得。
  • aspectRatio是裁剪区域的纵横比。如果想以任意纵横比裁剪图像,请设置为null或省略。
  • aspectRatio可以通过CropController.aspectRatio的setter动态更改(如下所示)。
  • initialSize 是裁剪区域的初始大小。1.0(或默认的 null)适合图片的大小,这意味着裁剪区域尽可能地延伸。0.5 将是它的一半。当通过 CropController.aspectRatio 更改 aspectRatio 时,也会参考此值。
  • withCircleUi 标志用于决定裁剪 UI 的形状。如果为 true,则 aspectRatio 会自动设置为 1.0,并且裁剪 UI 的形状将是圆形。请注意,此标志不会影响裁剪图像的结果。如果您想要裁剪为圆形的图像,请调用 CropController.cropCircle 而不是 CropController.crop

如果您想通过自己设计的 Widgets 进行控制,请创建一个 CropController 实例并将其传递给 Cropcontroller 属性。

final _controller = CropController();

Widget build(BuildContext context) {
  return Crop(
    image: _imageData,
    onCropped: (image) {
      // do something with image data 
    }
    controller: _controller,
  );
}

您可以通过调用 _controller.crop() 来裁剪图像。

ElevatedButton(
  child: Text('Crop it!')
  onPressed: _cropController.crop,
),

因为 _controller.crop() 仅触发裁剪过程,所以此方法会立即返回,而没有任何裁剪后的图像数据。您始终可以通过 Crop Widget 的 onCropped 回调来获取裁剪图像的结果。