【问题标题】:Change Image Size From Uint8List Data in Flutter从 Flutter 中的 Uint8List 数据更改图像大小
【发布时间】:2020-10-13 00:14:54
【问题描述】:

我正在尝试根据 uint8list 数据更改图像大小。

如你所知,Flutter 中有很多 Image 类, 我想得到的最后一种图像是 ui.Image。

我从套接字通信中获取 Uint8List Image(.jpg) 数据。
现在,我想设置图片的大小,最后得到ui.Image的Image。

我试图通过 (dart:ui : ui, package:image/image.dart : IMG) 来做到这一点

IMG.Image img = IMG.decodeImage(data);
IMG.Image resized = IMG.copyResize(img, width: 400, height: 200);
ui.Codec codec = await ui.instantiateImageCodec(IMG.encodeJpg(resized));
ui.Image image = (await codec.getNextFrame()).image;

,但它会冻结应用程序。

我该怎么做?有什么办法吗?谢谢。

另外,
在“flutter/lib/src/widgets/image.dart”中, Image.memory(Uint8List, width, height) 可以很容易地设置图像大小。 有什么方法可以从该 Image 小部件中获取 Uint8List 吗?

【问题讨论】:

    标签: image flutter resize


    【解决方案1】:

    我在 Uint8List 中调整了图像数据的大小,如下所示。

    import package:image/image.dart as IMG
    
    Uint8List resizeImage(Uint8List data) {
            Uint8List resizedData = data;
            IMG.Image img = IMG.decodeImage(data);
            IMG.Image resized = IMG.copyResize(img, width: img.width*2, height: img.height*2);
            resizedData = IMG.encodeJpg(resized);
            return resizedData;
         }  
    

    IMG : 颤振图片包

    【讨论】:

      【解决方案2】:

      您是否尝试过使用ui.decodeImageFromList 代替ui.instantiateImageCodecgetNextFrame()

      import 'dart:ui' as ui;
      
      ui.decodeImageFromList(IMG.encodeJpg(resized), (ui.Image img) {
        // returned ui.Image
      });
      

      【讨论】:

      • 感谢您的回答!当我使用ui.Image img数据时,显示无效图像数据错误。
      • 您是否在结果 img 上调用了“getNextFrame()”? @JaehyungKim
      • 当 IMG.encodeJpg(resized) 返回 List 时如何工作
      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 2020-10-21
      • 2019-04-10
      • 1970-01-01
      • 2022-11-03
      • 2020-10-26
      • 2020-07-18
      • 2020-07-09
      相关资源
      最近更新 更多