How do I crop an image in Flutter?

后端 未结 5 1101
长发绾君心
长发绾君心 2020-12-03 03:09

Let\'s say I have a rectangular, portrait image:

I\'d like to crop it, such that it\'s rendered like this:

How can I do this in Flutter?

5条回答
  •  [愿得一人]
    2020-12-03 03:57

    import 'dart:io';
    import 'package:flutter/material.dart';
    import 'package:image_picker/image_picker.dart';
    import 'package:image_cropper/image_cropper.dart';
    
    class MyPage extends StatefulWidget {
      @override
      _MyPageState createState() => _MyPageState();
    }
    
    class _MyPageState extends State {
      /// Variables
      File imageFile;
    
      /// Widget
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              backgroundColor: Color(0XFF307777),
              title: Text("Image Cropper"),
            ),
            body: Container(
                child: imageFile == null
                    ? Container(
                        alignment: Alignment.center,
                        child: Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          children: [
                            RaisedButton(
                              color: Color(0XFF307777),
                              onPressed: () {
                                _getFromGallery();
                              },
                              child: Text(
                                "PICK FROM GALLERY",
                                style: TextStyle(color: Colors.white),
                              ),
                            ),
                          ],
                        ),
                      )
                    : Container(
                        child: Image.file(
                          imageFile,
                          fit: BoxFit.cover,
                        ),
                      )));
      }
    
      /// Get from gallery
      _getFromGallery() async {
        PickedFile pickedFile = await ImagePicker().getImage(
          source: ImageSource.gallery,
          maxWidth: 1800,
          maxHeight: 1800,
        );
        _cropImage(pickedFile.path);
      }
    
      /// Crop Image
      _cropImage(filePath) async {
        File croppedImage = await ImageCropper.cropImage(
          sourcePath: filePath,
          maxWidth: 1080,
          maxHeight: 1080,
        );
        if (croppedImage != null) {
          imageFile = croppedImage;
          setState(() {});
        }
      }
    }
    

提交回复
热议问题