Image Cropping with Flutter's Image Cropper Plugin
Published on by Flutter News Hub
![Image Cropping with Flutter's Image Cropper Plugin](https://flutternewshub.com/storage/images/posts/01HQMGRT27T9BMCVSFXZDDZYFW.webp)
The Image Cropper plugin for Flutter allows you to easily crop images from your mobile applications. It provides a consistent UI across different platforms (Android, iOS, and Web) and supports various cropping options.
Implementation
1. Installation
Add the Image Cropper plugin to your Flutter project's pubspec.yaml file:
dependencies: image_cropper: ^1.5.0
Run flutter pub get to install the plugin.
2. Usage
Import the Image Cropper into your Dart code:
import 'package:image_cropper/image_cropper.dart';
3. Crop an Image
To crop an image, use the cropImage method of the ImageCropper class. The following code crops an image from a file:
final croppedFile = await ImageCropper.cropImage( sourcePath: 'path/to/original_image.jpg', aspectRatioPresets: [ CropAspectRatioPreset.square, CropAspectRatioPreset.ratio3x2, CropAspectRatioPreset.original, CropAspectRatioPreset.ratio4x3, CropAspectRatioPreset.ratio16x9, ], );
4. Customization
The Image Cropper plugin allows you to customize the UI and cropping behavior based on the platform. You can specify different settings for Android, iOS, and Web:
Android:
uiSettings: [ AndroidUiSettings( toolbarTitle: 'My Cropper', toolbarColor: Colors.deepOrange, toolbarWidgetColor: Colors.white, initAspectRatio: CropAspectRatioPreset.original, lockAspectRatio: false, ), ],
iOS:
uiSettings: [ IOSUiSettings( title: 'My Cropper', ), ],
Web:
uiSettings: [ WebUiSettings( context: context, // BuildContext of the current screen ), ],
Sample Code
Here's a complete example of cropping an image using the Image Cropper plugin:
import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:image_cropper/image_cropper.dart'; class ImageCropExample extends StatefulWidget { @override _ImageCropExampleState createState() => _ImageCropExampleState(); } class _ImageCropExampleState extends State { CroppedFile? _croppedFile; Future _cropImage() async { final imageFile = await ImagePicker().pickImage(source: ImageSource.gallery); if (imageFile != null) { final croppedFile = await ImageCropper.cropImage( sourcePath: imageFile.path, aspectRatioPresets: [ CropAspectRatioPreset.square, CropAspectRatioPreset.ratio3x2, CropAspectRatioPreset.original, CropAspectRatioPreset.ratio4x3, CropAspectRatioPreset.ratio16x9, ], uiSettings: [ AndroidUiSettings( toolbarTitle: 'My Cropper', toolbarColor: Colors.deepOrange, toolbarWidgetColor: Colors.white, initAspectRatio: CropAspectRatioPreset.original, lockAspectRatio: false, ), IOSUiSettings( title: 'My Cropper', ), WebUiSettings( context: context, // BuildContext of the current screen ), ], ); if (croppedFile != null) { setState(() { _croppedFile = croppedFile; }); } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Image Cropper Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ if (_croppedFile != null) Image.file(_croppedFile!.path), ElevatedButton( onPressed: _cropImage, child: Text('Crop Image'), ), ], ), ), ); } }
Conclusion
The Image Cropper plugin provides a powerful and customizable way to crop images in your Flutter applications. It enables you to offer a consistent and user-friendly cropping experience across different platforms.