Flutter 压缩相机图像

Posted

技术标签:

【中文标题】Flutter 压缩相机图像【英文标题】:Flutter Compress Camera Image 【发布时间】:2021-10-06 14:48:36 【问题描述】:

我想通过相机点击照片并想压缩然后上传到服务器

我已经包含了图像压缩依赖,它向我显示了错误getter 'absolute' 没有为类型'PickedFile' 定义。

编写了点击图片上传到服务器的代码 // 从相机拍照

Widget bottomSheet() 
return Container(
  height: 100.0,
  width: MediaQuery.of(context).size.width,
  margin: EdgeInsets.symmetric(
    horizontal: 20,
    vertical: 20,
  ),
  child: Column(
    children: <Widget>[
      Text(
        "Take A Picture",
        style: TextStyle(
          fontSize: 20.0,
        ),
      ),
      SizedBox(
        height: 20,
      ),
      Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
        // ignore: deprecated_member_use
        FlatButton.icon(
          icon: Icon(Icons.camera),
          onPressed: () 
            takePhoto(ImageSource.camera);
          ,
          label: Text("Camera"),
        ),
      ])
    ],
  ),
);


void takePhoto(source) async 
final pickedFile = await _picker.getImage(
  source: source,
);
setState(() 
  _imageFile = pickedFile;
);
await FlutterImageCompress.compressWithFile(
  _imageFile.absolute.path,
  minWidth: 2300,
  minHeight: 1500,
  quality: 94,
  rotate: 90,
);
 

【问题讨论】:

【参考方案1】:

不使用 FlutterImageCompress.compressWithFile 只需在 _picker.getImage 中添加 imageQuality

_picker.getImage(
      source:ImageSource.camera,
      minWidth: 2300,
      minHeight: 1500,
      imageQuality: 75
)

随着图像质量值大小的改变,图像的大小发生变化

【讨论】:

但假设我想通过 Internet 将图像发送到 API,最好将其保存在 tiff 中并进行压缩。 是的,您可以发布具有图像质量的图像。由于每个多部分 api 都有发布的大小限制。

以上是关于Flutter 压缩相机图像的主要内容,如果未能解决你的问题,请参考以下文章

Flutter/Dart - 如何在其他屏幕上的图像选择器后更新图像

Flutter Camera Plugin 拍摄暗图像错误

Flutter AZURE BLOB IMAGE UPLOAD - 如何将使用移动相机拍摄的图像上传到 azure blob 存储

Flutter Web:如何压缩图像/文件?

如何设置 3:4 纵横比 Flutter 相机预览

如何方形裁剪 Flutter 相机预览