【问题标题】:Convert Image object to rgb pixel array and back in Flutter将 Image 对象转换为 rgb 像素数组并返回 Flutter
【发布时间】:2018-03-05 07:14:29
【问题描述】:

有没有办法获得图像的 rgb 矩阵表示?反之亦然?我想对原始图像执行图像屏蔽/过滤,因此需要将其应用于其 rgb 矩阵表示。目前使用此库从设备获取图像:https://pub.dartlang.org/packages/image_picker

【问题讨论】:

  • pub.dartlang.org/packages/image 可能包含一些有用的东西
  • @GünterZöchbauer 是的!这就是我要找的!谢谢!
  • @GünterZöchbauer 您能否将您的评论转换为答案,以便 OP 将其标记为已回答?
  • 你能说出这个包中的哪个类和方法提供了这个功能吗?

标签: image matrix dart flutter


【解决方案1】:

https://pub.dartlang.org/packages/image提供图像转换和操作实用功能。

【讨论】:

  • 不幸的是,这个库将图像从原始 RGB 数组编码回 PNG/JPG 的速度非常慢
  • 我建议提出问题。
  • @GünterZöchbauer 能否补充更多细节,如何使用 Image 包将 CameraImage 转换为 rgb 像素阵列?
  • 任何人都有他们可以提供使用代码的具体示例。我看到你标记为正确。
【解决方案2】:
import 'dart:ui' as ui;
import 'package:flutter/material.dart';

// for a local iamge example
List RGBAList;
// 1. get [ImageProvider] instance
//    [ExactAssetImage] extends [AssetBundleImageProvider] extends [ImageProvider]
ExactAssetImage provider = ExactAssetImage('$local_img_uri');

// 2. get [ui.Image] by [ImageProvider]
ImageStream stream = provider.resolve(ImageConfiguration.empty);
Completer completer = Completer<ui.Image>();
ImageStreamListener listener = ImageStreamListener((frame, sync) {
    ui.Image image = frame.image;
    completer.complete(image);
    stream.removeListener(listener);
})
stream.addListener(listener);

// 3. get rgba array/list by [ui.Image]
completer.then((ui.Image image) {
    image.toByteData(format: ui.ImageByteFormat.rowRgba).then((ByteData data) {
        RGBAList = data.buffer.asUint8List().toList();
    }); 
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2013-03-04
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多