Crop Image Pro

一个支持安卓、iOS、鸿蒙的 Flutter 图片裁剪插件,完全用 Dart 实现,无需依赖原生库。

功能特性

  • 支持拖拽图片、放大缩小图片,灵活选定裁剪区域
  • 支持拖动裁剪框、放大缩小裁剪框,精准选定裁剪区域
  • 可自定义裁剪框外观(颜色、线宽、圆角等)
  • 支持固定/自定义裁剪比例
  • 支持裁剪区域旋转
  • 支持获取裁剪后图片像素数据

预览

插件预览

快速开始

final controller = CropController(
  aspectRatio: 1, // 可选,裁剪框宽高比
  defaultCrop: Rect.fromLTRB(0.1, 0.1, 0.9, 0.9), // 可选,初始裁剪区域
);

Expanded(
  child: CropImagePro(
    controller: controller,
    image: Image.asset('assets/images.jpg'),
    alwaysShowThirdLines: true,
    interactionMode: CropInteractionMode.image, // 或 CropInteractionMode.crop
    showCorners: false,
  ),
)

你可以将 CropImagePro 放在任意布局中,常见用法如上。interactionMode 可选 "image" 或 "crop",分别对应图片拖拽/缩放和裁剪框拖拽/缩放模式。

主要参数说明

  • aspectRatio:裁剪框宽高比
  • defaultCrop:初始裁剪区域(百分比)
  • gridColorgridInnerColorgridCornerColor:裁剪框线条颜色
  • gridCornerSizecornerOffset:裁剪框角尺寸与偏移
  • minimumImageSizemaximumImageSize:裁剪框最小/最大像素尺寸
  • alwaysShowThirdLines:是否总显示九宫格辅助线
  • scrimColor:裁剪区域外遮罩颜色

裁剪与导出

// 获取裁剪区域(百分比和像素)
Rect cropRect = controller.crop;
Rect cropRectPx = controller.cropSize;

// 导出裁剪后的图片
ui.Image bitmap = await controller.croppedBitmap();
Image image = await controller.croppedImage();

旋转裁剪区域

controller.rotation = CropRotation.right;
controller.rotateLeft();
controller.rotateRight();

保存图片到文件

data = await bitmap.toByteData(format: ImageByteFormat.png);
bytes = data!.buffer.asUint8List();
file.writeAsBytes(bytes, flush: true);

Libraries

crop_image