Flutter图像压缩插件downsize的使用
Flutter图像压缩插件downsize的使用
下载和安装
Downsize 是一个纯 Dart 包,用于对多种格式(如 JPG、PNG、GIF、BMP、TIFF、TGA、PVR 和 ICO 等)进行图像压缩。它能够有效减少文件大小,同时保持图像质量,并且支持动态缩放和针对不同格式的特定压缩技术。无论您是在优化网页还是移动应用中的图片,Downsize 都设计得非常灵活且易于使用。
此包基于 image
Dart 包构建,提供了额外的压缩和缩放功能,具有简单易用的 API。
特性
- 支持多种图像格式的压缩:JPG、PNG、GIF、BMP、TIFF、TGA、PVR、ICO 等。
- 动态根据尺寸调整图像大小,防止不必要的大文件。
- 可定制的压缩质量和目标文件大小。
- 针对不同格式的特定压缩技术,例如 PNG 文件中减少颜色深度。
- 内置扩展,便于与 Uint8List 和 File 对象集成。
开始使用
先决条件
- Dart SDK 版本 2.12.0 或更高版本:安装 Dart
安装
- 将
downsize
添加到项目中的pubspec.yaml
文件中:
dependencies:
downsize:
- 安装依赖项:
dart pub get
使用示例
以下是一个简单的示例,展示如何使用 Downsize 压缩图像:
import 'dart:io';
import 'package:downsize/downsize.dart';
void main() async {
final input = '${Directory.current.path}/example/test.png'; // 替换为任何支持的格式
final output = '${Directory.current.path}/example/compressed.png';
final data = await File(input).readAsBytes();
print('Old size: ${data.sizeKb}kb');
final compressedData = await Downsize.downsize(data: data);
print('New size: ${compressedData?.sizeKb}kb');
await File(output).writeAsBytes(compressedData!);
}
同样的函数适用于所有支持的图像格式。只需提供图像数据并指定所需的文件大小或压缩质量即可。
更多信息
有关更多信息,请访问 GitHub 存储库。您可以报告问题或通过 GitHub 提交拉取请求或问题来贡献。
贡献
欢迎贡献!请确保您的代码遵循最佳实践和包含的 lint 规则。要贡献:
- 拉取存储库。
- 创建功能分支。
- 提交拉取请求。
感谢您使用 Downsize!
以下是完整的示例代码:
import 'dart:io';
import 'dart:typed_data';
import 'package:downsize/downsize.dart';
void main() async {
final input = '${Directory.current.path}/example/test.png'; // 替换为任何支持的格式
final output = '${Directory.current.path}/example/compressed.png';
final data = await File(input).readAsBytes();
print('Old size: ${data.sizeKb}kb');
final compressedData = await Downsize.downsize(data: data);
print('New size: ${compressedData?.sizeKb}kb');
await File(output).writeAsBytes(compressedData!);
}
更多关于Flutter图像压缩插件downsize的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter图像压缩插件downsize的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用downsize
插件来进行图像压缩的示例代码。downsize
是一个流行的Flutter插件,用于压缩图像文件。
首先,确保你已经将downsize
插件添加到你的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
downsize_image: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装该插件。
接下来,在你的Flutter项目中,你可以使用以下代码来压缩图像:
import 'package:flutter/material.dart';
import 'package:downsize_image/downsize_image.dart';
import 'dart:io';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Image Downsize Example'),
),
body: Center(
child: ImageDownsizeExample(),
),
),
);
}
}
class ImageDownsizeExample extends StatefulWidget {
@override
_ImageDownsizeExampleState createState() => _ImageDownsizeExampleState();
}
class _ImageDownsizeExampleState extends State<ImageDownsizeExample> {
File? _originalImage;
File? _compressedImage;
void _pickImage() async {
final picker = ImagePicker();
final pickedFile = await picker.pickImage(source: ImageSource.camera);
if (pickedFile != null) {
setState(() {
_originalImage = File(pickedFile.path);
_compressImage(_originalImage!);
});
}
}
void _compressImage(File originalImage) async {
try {
final compressedImageFile = await DownsizeImage.compressImage(
originalImage.path,
quality: 50, // 设置压缩质量,范围为0-100
maxWidth: 800, // 可选,设置最大宽度
maxHeight: 800, // 可选,设置最大高度
);
setState(() {
_compressedImage = compressedImageFile;
});
} catch (e) {
print('Error compressing image: $e');
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _pickImage,
child: Text('Pick Image'),
),
SizedBox(height: 20),
if (_originalImage != null)
Image.file(_originalImage!, width: 300, height: 300),
SizedBox(height: 20),
if (_compressedImage != null)
Image.file(_compressedImage!, width: 300, height: 300),
],
);
}
}
解释
-
依赖安装:首先,确保在
pubspec.yaml
文件中添加downsize_image
依赖。 -
选择图片:使用
ImagePicker
插件从相机或图库中选择图片。 -
压缩图片:调用
DownsizeImage.compressImage
方法,传入图片路径、压缩质量、最大宽度和最大高度(可选)。 -
显示图片:在UI中显示原始图片和压缩后的图片。
注意事项
- 请确保你已经在
AndroidManifest.xml
和Info.plist
中配置了必要的权限,以便访问相机和存储。 quality
参数控制压缩质量,范围从0到100。maxWidth
和maxHeight
参数是可选的,你可以根据需求设置它们来控制压缩后的图片尺寸。
这样,你就可以在你的Flutter应用中使用downsize
插件进行图像压缩了。