颤动图像尺寸

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

我试图获取以 MB 为单位的图像大小,但当在手机图库中查看大小时,打印结果小于实际结果,为什么?

例如,从 flutter 上传的图像大小为 5MB,打印时为 2.4MB

这是我的代码:

pickerFile = await ImagePicker().pickImage(
      source: ImageSource.gallery,
    );
 int fileSizeInBytes = await pickerFile!.length();
 double fileSizeInKB = fileSizeInBytes / 1024;
 double fileSizeInMB = fileSizeInKB / 1024;
flutter dart
2个回答
0
投票

由于压缩、元数据或图像在屏幕上呈现的方式等多种因素,手机图库中显示的大小可能与以编程方式计算的大小不同。


0
投票

您可以尝试以下方法

  1. 请尝试使用 imageQuality: 50 这样

    ImagePicker().pickImage(

    来源:ImageSource.gallery,

    图像质量:50, // 根据您的需要调整它

    );

  2. 你也可以这样定义

    var maxFileSizeInBytes = 2 * 1048576; // 2MB

    X文件? pickFile = 等待 ImagePicker().pickImage( 来源:ImageSource.gallery, );

    var imagePath =等待pickFile!.readAsBytes();

    var 文件大小 = imagePath.length; // 获取文件大小(以字节为单位)

    if(文件大小<= maxFileSizeInBytes) {

    // File is the right size, upload/use it
    

    }其他{

    // File is too large, ask user to upload a smaller file, or compress the file/image
    

    } }

  3. 您可以使用这个包并尝试图像:^4.1.7

  4. 请使用 readasbytes 检查文件长度,如下所示:

    最终字节= image.readAsBytesSync().lengthInBytes;

    最终 kb = 字节 / 1024;

    最终MB = kb / 1024;

希望您能从上述步骤之一找到答案。

© www.soinside.com 2019 - 2024. All rights reserved.