Flutter图像处理辅助插件imageengine_helpers_dart的使用

Flutter图像处理辅助插件imageengine_helpers_dart的使用

Dart ImageEngine Helpers

imageengine_helpers_dart 是一个用于构建 ImageEngine 查询 URL 的小型工具集。这些工具在从 ImageEngine 分发中获取资源时非常有用,允许你通过对象声明指令。


安装

首先,在 pubspec.yaml 文件中添加依赖项:

dependencies:
  imageengine_helpers: ^1.0.0

然后运行以下命令以安装依赖:

flutter pub get

类型定义

以下是 imageengine_helpers_dart 中的主要类型定义:

// 定义支持的图像格式枚举
enum IEFormat {
  png,    // PNG
  gif,    // GIF
  jpg,    // JPEG
  bmp,    // BMP
  webp,   // WebP
  jp2,    // JPEG 2000
  svg,    // SVG
  mp4,    // MP4
  jxr,    // JPEG XR
  avif,   // AVIF
  jxl,    // JPEG XL
}

// 定义图像适配方式枚举
enum IEFit {
  stretch,       // 拉伸
  box,           // 填充
  letterbox,     // 黑边填充
  cropbox,       // 裁剪
  outside,       // 外部适配
}

// 定义指令类
class IEDirectives {
  final int? width; // 最终图像的宽度
  final int? height; // 最终图像的高度
  final int? autoWidthFallback; // 如果设备检测失败,尝试使用回退值

  final int? scaleToScreenWidth; // 屏幕宽度比例 (0-100)
  final String? crop; // 裁剪区域字符串,例如 "width,height,left,top"

  final IEFormat? format; // 输出格式
  final IEFit? fit; // 图像适配方式

  final int? compression; // 压缩质量 (0-100)
  final int? sharpness; // 锐化程度 (0-100)
  final int? rotate; // 旋转角度 (-360-360)

  final bool? inline; // 是否将图像转换为 DataURL
  final bool? keepMeta; // 是否保留 EXIF 数据
  final bool? noOptimization; // 是否禁用 ImageEngine 优化
  final bool? forceDownload; // 是否强制下载
  final double? maxDevicePixelRatio; // 设备像素比 (1-4)

  IEDirectives({
    this.width,
    this.height,
    this.autoWidthFallback,
    this.scaleToScreenWidth,
    this.crop,
    this.format,
    this.fit,
    this.compression,
    this.sharpness,
    this.rotate,
    this.inline,
    this.keepMeta,
    this.noOptimization,
    this.forceDownload,
    this.maxDevicePixelRatio,
  });
}

示例用法

以下是一个完整的示例,展示如何使用 imageengine_helpers_dart 构建 ImageEngine 查询 URL:

import 'package:imageengine_helpers/imageengine_helpers.dart';

void main() {
  // 创建指令对象
  IEDirectives directives = IEDirectives(
    width: 400,            // 设置图像宽度为 400
    height: 200,           // 设置图像高度为 200
    fit: IEFit.cropbox,    // 使用裁剪适配方式
    compression: 10,       // 设置压缩质量为 10
    inline: true,          // 将图像转换为 DataURL
    format: IEFormat.png,  // 输出格式为 PNG
    forceDownload: true,   // 强制下载
    maxDevicePixelRatio: 2.1, // 设置设备像素比为 2.1
  );

  // 源图像 URL
  String sourceUrl = "https://my_ie_distribution.imgeng.io/path/to_asset1.jpg";

  // 构建最终的 ImageEngine URL
  String finalUrl = buildIEUrl(sourceUrl, directives);

  // 输出最终 URL
  print(finalUrl);
  // 输出结果: "https://my_ie_distribution.imgeng.io/path/to_asset1.jpg?imgeng=/w_400/h_200/m_cropbox/cmpr_10/in_true/f_png/dl_true"

  // 获取指令字符串表示
  String directivesString = buildIEDirectives(directives);

  // 输出指令字符串
  print(directivesString);
  // 输出结果: "/w_400/h_200/m_cropbox/cmpr_10/in_true/f_png/dl_true"

  // 获取查询字符串
  String queryString = buildIEQueryString(directives);

  // 输出查询字符串
  print(queryString);
  // 输出结果: "?imgeng=/w_400/h_200/m_cropbox/cmpr_10/in_true/f_png/dl_true"
}

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

1 回复

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


imageengine_helpers_dart 是一个用于 Flutter 的辅助插件,旨在帮助开发者更高效地处理图像。它主要提供了与 ImageEngine 集成的功能,ImageEngine 是一种图像优化和交付服务,可以自动调整图像大小、格式和质量,以适应不同的设备和网络条件。

安装

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

dependencies:
  flutter:
    sdk: flutter
  imageengine_helpers_dart: ^1.0.0 # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

基本用法

1. 初始化 ImageEngine

在使用插件之前,你需要初始化 ImageEngine 客户端。通常,你需要在应用的 main 函数中进行初始化:

import 'package:imageengine_helpers_dart/imageengine_helpers_dart.dart';

void main() {
  // 初始化 ImageEngine
  ImageEngine.initialize(
    deliveryAddress: 'https://your-domain.imgeng.in', // 你的 ImageEngine 交付地址
  );

  runApp(MyApp());
}

2. 生成优化后的图像 URL

你可以使用 ImageEngine 类来生成优化后的图像 URL。这个 URL 可以根据设备的屏幕尺寸、网络条件等自动调整图像的大小和格式:

String originalImageUrl = 'https://example.com/path/to/your/image.jpg';
String optimizedImageUrl = ImageEngine.getOptimizedImageUrl(originalImageUrl);

// 使用优化后的 URL 加载图像
Image.network(optimizedImageUrl);

3. 自定义图像参数

你可以通过传递参数来进一步自定义图像的优化方式。例如,你可以指定图像的宽度、高度、质量等:

String originalImageUrl = 'https://example.com/path/to/your/image.jpg';
String optimizedImageUrl = ImageEngine.getOptimizedImageUrl(
  originalImageUrl,
  width: 300,  // 设置图像宽度
  height: 200, // 设置图像高度
  quality: 80, // 设置图像质量 (0-100)
);

// 使用优化后的 URL 加载图像
Image.network(optimizedImageUrl);

4. 使用 ImageEngineImage 组件

imageengine_helpers_dart 还提供了一个 ImageEngineImage 组件,它是对 Flutter 的 Image.network 的封装,可以直接使用:

import 'package:imageengine_helpers_dart/imageengine_helpers_dart.dart';

ImageEngineImage(
  'https://example.com/path/to/your/image.jpg',
  width: 300,
  height: 200,
  fit: BoxFit.cover,
);

高级用法

1. 自动检测设备像素比

ImageEngine 可以自动检测设备的像素比,并根据该比例调整图像的大小。你可以通过 devicePixelRatio 参数启用此功能:

String optimizedImageUrl = ImageEngine.getOptimizedImageUrl(
  originalImageUrl,
  width: 300,
  devicePixelRatio: true, // 自动检测设备像素比
);

2. 使用自定义域名

如果你使用自定义域名来交付图像,可以在初始化时指定 deliveryAddress

ImageEngine.initialize(
  deliveryAddress: 'https://images.yourdomain.com',
);
回到顶部