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

