Flutter图片压缩处理插件ak_tiny_img的使用

Flutter 图片压缩处理插件 ak_tiny_img 的使用

基于 tiny image 的无损图片压缩工具

注意 “ak_tiny_img” 是测试上传的项目请使用“ak_tiny_image”**后续不再更新

功能说明:

  1. 使用该工具包可以实现项目内指定目录下所有图片的压缩。
  2. 可以记录以前项目中旧图片不做压缩。
  3. 压缩后的图片会有压缩记录,下次压缩不会重复压缩。
  4. 支持 webp、png、jpeg 三种格式文件压缩。

使用方法:

  1. 脚本配置:
// 在项目中实现类似 AKTinyDoSave.dart、AKTinyDoComp.dart 的配置

AKTinyImageManager.instance.init(
    tinyImageApiKey: "x2zpZtVlK4MJjDm03P6b1h1DhGzGR4c4",     // TinyImage的Apikey可到TinyImage申请
    projectRootPath: '/Users/anker/tiny_image/ak_tiny_image', // 项目工程地址
    imageDirPaths: {
        '/Users/anker/tiny_image/ak_tiny_image/example/imageA'  // 需要压缩图片的根目录
    }
)
  1. 如何记录项目中以前旧的图片不做压缩:
// 执行以下命令:
// 1. 会计算图片的md5值并保存到项目中的".ak_tiny_image_uiq_id" 文件中
// 2. 当执行图片压缩时会计算图片的md5值是否已经在文件中,在则说明图片不需要做压缩
// 3. 该脚本一般只在项目开始使用该工具前调用一次或者在新增加图片前使用一次
// 4. ".ak_tiny_image_uiq_id" 需要提交到git以统一记录压缩过的图片

dart AKTinyDoSave.dart
  1. 如何记录项目中以前旧的图片不做压缩:
// 执行以下命令:
// 1. 会读取项目中的".ak_tiny_image_uiq_id" 文件中保存已经记录压缩过的图片md5值
// 2. 当执行图片压缩时会计算图片的md5值是否已经在文件中,在则说明图片不需要做压缩
// 3. 将需要压缩的图片上传到tiny image进行压缩替换原来的图片
// 4. ".ak_tiny_image_uiq_id" 需要提交到git以统一记录压缩过的图片

dart AKTinyDoComp.dart

完整示例 Demo

以下是完整的 Flutter 项目中使用 ak_tiny_image 插件的示例代码。假设你已经安装了 ak_tiny_image 并且已经在项目中配置好了 AKTinyDoSave.dartAKTinyDoComp.dart

  1. 创建 AKTinyDoSave.dart 文件
import 'package:ak_tiny_image/ak_tiny_image.dart';

void main() async {
  await AKTinyImageManager.instance.init(
    tinyImageApiKey: "x2zpZtVlK4MJjDm03P6b1h1DhGzGR4c4",
    projectRootPath: '/Users/anker/tiny_image/ak_tiny_image',
    imageDirPaths: {
      '/Users/anker/tiny_image/ak_tiny_image/example/imageA'
    },
  );

  print('保存图片压缩记录...');
  await AKTinyImageManager.instance.saveImages();
}
  1. 创建 AKTinyDoComp.dart 文件
import 'package:ak_tiny_image/ak_tiny_image.dart';

void main() async {
  await AKTinyImageManager.instance.init(
    tinyImageApiKey: "x2zpZtVlK4MJjDm03P6b1h1DhGzGR4c4",
    projectRootPath: '/Users/anker/tiny_image/ak_tiny_image',
    imageDirPaths: {
      '/Users/anker/tiny_image/ak_tiny_image/example/imageA'
    },
  );

  print('开始压缩图片...');
  await AKTinyImageManager.instance.compressImages();
}

运行脚本

  1. 保存图片压缩记录
dart AKTinyDoSave.dart
  1. 开始压缩图片
dart AKTinyDoComp.dart

更多关于Flutter图片压缩处理插件ak_tiny_img的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图片压缩处理插件ak_tiny_img的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


ak_tiny_img 是一个用于 Flutter 的图片压缩处理插件,它可以帮助你轻松地压缩图片,减少图片文件的大小,从而提高应用的性能。以下是使用 ak_tiny_img 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 ak_tiny_img 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  ak_tiny_img: ^1.0.0  # 请确保使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用图片压缩功能的 Dart 文件中导入 ak_tiny_img 插件:

import 'package:ak_tiny_img/ak_tiny_img.dart';

3. 使用插件压缩图片

你可以使用 ak_tiny_img 提供的 compressImage 方法来压缩图片。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:ak_tiny_img/ak_tiny_img.dart';
import 'dart:io';

class ImageCompressionExample extends StatefulWidget {
  [@override](/user/override)
  _ImageCompressionExampleState createState() => _ImageCompressionExampleState();
}

class _ImageCompressionExampleState extends State<ImageCompressionExample> {
  File? _compressedImage;

  Future<void> _compressImage() async {
    // 选择一张图片文件
    File originalImage = File('path/to/your/image.jpg');

    // 使用 ak_tiny_img 压缩图片
    File? compressedImage = await AkTinyImg.compressImage(originalImage);

    if (compressedImage != null) {
      setState(() {
        _compressedImage = compressedImage;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Compression Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_compressedImage != null)
              Image.file(_compressedImage!),
            ElevatedButton(
              onPressed: _compressImage,
              child: Text('Compress Image'),
            ),
          ],
        ),
      ),
    );
  }
}

void main() => runApp(MaterialApp(
  home: ImageCompressionExample(),
));
回到顶部