crop_image_pro 1.2.0
crop_image_pro: ^1.2.0 copied to clipboard
An image cropper widget, with 90-degree rotations. Supports mobile, web and desktop.
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:初始裁剪区域(百分比)gridColor、gridInnerColor、gridCornerColor:裁剪框线条颜色gridCornerSize、cornerOffset:裁剪框角尺寸与偏移minimumImageSize、maximumImageSize:裁剪框最小/最大像素尺寸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);
