图像裁切不正确

时间:2019-05-03 21:47:23

标签: flutter

我在Flutter上为我的应用制作了图片裁剪器。从视觉上讲,它可以正常工作。但是生成的“裁剪”图像是错误的。

这是开始执行该过程所调用的函数。它会打开相机并等待用户拍照。

Future getImageFromCamera({BuildContext context}) async {
    var imagePicker = await ImagePicker.pickImage(source: ImageSource.camera);
    final sampleFile = await ImageCrop.sampleImage(
      file: imagePicker,
      preferredSize: context.size.longestSide.ceil(),
    );
    image = sampleFile;
    openAddEntryDialog(
        context: context, child: cropperDialog(context: context, image: image));
  }

在这里我打开一个全屏对话框

void openAddEntryDialog({BuildContext context, Widget child}) {
    Navigator.of(context).push(new MaterialPageRoute<Null>(
        builder: (BuildContext context) => child, fullscreenDialog: true));
  }

这是充当全屏对话框的Widget,它具有进行裁剪的按钮。

Widget cropperDialog({BuildContext context, File image}) {
    return Scaffold(
      backgroundColor: Colors.black.withOpacity(0.5),
      appBar: AppBar(
        backgroundColor: Colors.transparent,
        elevation: 0,
        actions: <Widget>[
          FlatButton(
            color: Colors.transparent,
            onPressed: () => _cropImage(context),
            child: Text(
              'Recortar',
              style: TextStyle(
                color: Colors.white,
                fontFamily: 'BrutalMedium',
                fontSize: 14.0,
              ),
            ),
          ),
        ],
      ),
      body: Container(
        width: double.infinity,
        height: double.infinity,
        child: Crop(
          key: cropKey,
          image: FileImage(image),
          aspectRatio: 1.0 / 1.0,
        ),
      ),
    );
  }

这是应该进行实际裁剪的功能

  Future<void> _cropImage(BuildContext context) async {
    final area = cropKey.currentState.area;
    if (area == null) {
      return;
    }

    croppedImage = await ImageCrop.cropImage(
      file: image,
      area: area,
    );
    image = croppedImage;
    notifyListeners();
    Navigator.of(context).pop();
  }

生成的图像应为正方形,但最终为垂直矩形。有人看到我在做什么错吗?谢谢。

0 个答案:

没有答案