Flutter图像压缩插件downsize的使用

发布于 1周前 作者 gougou168 来自 Flutter

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 对象集成。

开始使用

先决条件

安装

  1. downsize 添加到项目中的 pubspec.yaml 文件中:
dependencies:
  downsize:
  1. 安装依赖项:
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 规则。要贡献:

  1. 拉取存储库。
  2. 创建功能分支。
  3. 提交拉取请求。

感谢您使用 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

1 回复

更多关于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),
      ],
    );
  }
}

解释

  1. 依赖安装:首先,确保在pubspec.yaml文件中添加downsize_image依赖。

  2. 选择图片:使用ImagePicker插件从相机或图库中选择图片。

  3. 压缩图片:调用DownsizeImage.compressImage方法,传入图片路径、压缩质量、最大宽度和最大高度(可选)。

  4. 显示图片:在UI中显示原始图片和压缩后的图片。

注意事项

  • 请确保你已经在AndroidManifest.xmlInfo.plist中配置了必要的权限,以便访问相机和存储。
  • quality参数控制压缩质量,范围从0到100。
  • maxWidthmaxHeight参数是可选的,你可以根据需求设置它们来控制压缩后的图片尺寸。

这样,你就可以在你的Flutter应用中使用downsize插件进行图像压缩了。

回到顶部