You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:基于ImageFormatGroup.jpeg格式的CameraImage创建Image实例

从JPEG格式的CameraImage创建Flutter Image实例

当你将ImageFormatGroup设置为jpeg时,CameraImage的字节流本身就是完整的JPEG数据,无需额外格式转换,直接解码即可得到Flutter的Image实例,具体实现如下:

核心代码示例

import 'dart:ui' as ui;
import 'package:camera/camera.dart';

// 在CameraController的图像流回调中处理
cameraController.startImageStream((CameraImage image) async {
  // 校验图像格式是否为JPEG
  if (image.format.group != ImageFormatGroup.jpeg) return;

  // 获取JPEG原始字节
  final jpegBytes = image.planes.first.bytes;

  // 解码字节生成Image实例
  final codec = await ui.instantiateImageCodec(jpegBytes);
  final frame = await codec.getNextFrame();
  final ui.Image flutterImage = frame.image;

  // --------------- 后续操作示例 ---------------
  // 1. 转换为ImageProvider用于Widget显示
  final imageProvider = MemoryImage(jpegBytes);

  // 2. 使用完成后务必释放资源
  flutterImage.dispose();
});

关键注意点

  • 必须导入dart:ui包,解码相关API都来自这个库
  • 处理完ui.Image实例后一定要调用dispose(),避免内存泄漏
  • 如果只是需要在界面上显示图像,直接用MemoryImage传入JPEG字节即可,无需手动解码,Flutter框架会自动处理解码和资源管理

内容的提问来源于stack exchange,提问作者Robert Apikyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:05:27