android - 如何在 Flutter 中压缩 PNG 图像?
问题描述
我是 Fluuter 的新手。我正在尝试在 Flutter 中压缩或调整图像大小,但是当图像为 PNG 格式时,我总是遇到不支持的错误:
Invalid image: ExifInterface got an unsupported image format file(ExifInterface supports JPEG and some RAW image formats only) or a corrupted JPEG file to ExifInterface.
W/ExifInterface(23209): java.io.IOException: Invalid byte order: ffff8950
W/ExifInterface(23209): at android.media.ExifInterface.readByteOrder(ExifInterface.java:3121)
W/ExifInterface(23209): at android.media.ExifInterface.isOrfFormat(ExifInterface.java:2437)
W/ExifInterface(23209): at android.media.ExifInterface.getMimeType(ExifInterface.java:2315)
W/ExifInterface(23209): at android.media.ExifInterface.loadAttributes(ExifInterface.java:1753)
W/ExifInterface(23209): at android.media.ExifInterface.initForFilename(ExifInterface.java:2297)
W/ExifInterface(23209): at android.media.ExifInterface.<init>(ExifInterface.java:1384)
W/ExifInterface(23209): at io.flutter.plugins.imagepicker.ExifDataCopier.copyExif(ExifDataCopier.java:15)
W/ExifInterface(23209): at io.flutter.plugins.imagepicker.ImageResizer.resizeImageIfNeeded(ImageResizer.java:41)
W/ExifInterface(23209): at io.flutter.plugins.imagepicker.ImagePickerDelegate.handleImageResult(ImagePickerDelegate.java:530)
我尝试过使用image_picker
,flutter_image_compress.dart
但都不适用于 PNG 格式。这些软件包似乎只支持 JPG 格式。如何压缩 PNG 图像或以某种方式将 JPG 转换为 PNG?
这是我的代码:通过 uisngimage_picker
import 'package:image_picker/image_picker.dart';
var image = await ImagePicker.pickImage(
source: ImageSource.gallery,
maxHeight: 250, // it says this params have compression function but only for JPEG
maxWidth: 250,
imageQuality: 90
);
通过使用flutter_image_compress
import 'package:flutter_image_compress/flutter_image_compress.dart';
//if the origin image is PNG, it doesn't work
var compressImageData = await FlutterImageCompress.compressWithFile( //returns Future<List<int>>
image_path,
minWidth: 50,
minHeight: 50,
quality: 100,
format: CompressFormat.png //e.g. compress to PNG
);
提前致谢。
解决方案
Just using new Plugin name : File_support url : https://pub.dev/packages/file_support
This file support plugin is good when I used first time.It drastically reduce file size 2 mb to 70 kb.
File compressimage = await FileSupport().compressImage(<Your image file>);
推荐阅读
- javascript - 无法重新定义属性:$router,可能重复 Vue.use(VueRouter)
- linq - 使用 Contains 方法创建区分大小写的 LINQ 表达式(不区分大小写的排序数据库)
- python - how to fetch time series data from excel using openpyxl library?
- drupal - 当“视图块”为空 Drupal 8 时如何显示自定义块?
- python - Pygame全方位射击
- java - 如何递归地从通用列表中获取范围内的所有元素?
- amazon-web-services - 使用 AWS CLI 获取具有特定 HITTypeId 的 HITId
- perl - 只能使用 perl Net::XMPP 模块以匿名@unknown.com 身份连接到 XMPP 服务器
- python - Python。如何检查json中是否存在值?
- android - ScrollView 背景不均匀