如何在Flutter中压缩图像大小

问题描述 投票:0回答:4

当我从图库中选择图像或从相机中获取图像时,如何(压缩)图像的大小? Flutter 有封装或者方法吗?

import 'package:image_picker/image_picker.dart';

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  File _image;

  Future getImage() async {
    var image = await ImagePicker.pickImage(source: ImageSource.camera);

    setState(() {
      _image = image;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Picker Example'),
      ),
      body: Center(
        child: _image == null
            ? Text('No image selected.')
            : Image.file(_image),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: getImage,
        tooltip: 'Pick Image',
        child: Icon(Icons.add_a_photo),
      ),
    );
  }
}`
flutter
4个回答
4
投票

这是您可以使用的 getImage 函数:

Future getImage() async {
    var image = await ImagePicker.pickImage(
        source: ImageSource.gallery, imageQuality: 50, maxHeight: 600, maxWidth: 900);
    setState(() {
      _image = image;
    });
  }

您可以设置最大分辨率和图像质量,范围为 1 到 100。


3
投票

您可以在调用 pickImage 函数时提供宽度属性和质量

   var image = await ImagePicker.pickImage(source: ImageSource.camera, imageQuality: int, maxWidth: int);

宽度用于减小图像的尺寸(宽度*高度),质量是将使用的过滤器


2
投票
  1. 如果您想要固定大小,请先使用“SizedBox”,然后添加图像作为子项:

    大小框( 身高:40, 宽度:40, 子: Image.asset("icons/coins.png", 宽度: 100.0, 高度:100.0), ),

  2. 对于动态尺寸: 图像质量:70,最大宽度:100

  3. 如果您从API提取图像,则可以使用maxRadius:

示例:

child: CircleAvatar(
                    backgroundImage: NetworkImage('apilink/StudentsPhoto/S6247.jpg'),
                    maxRadius: 30,
                  ),

0
投票

你可以改变

imageQuality: 50,

 maxHeight: 600, 

 maxWidth: 900
© www.soinside.com 2019 - 2024. All rights reserved.