簡體   English   中英

從 Flutter 中的 Uint8List 數據更改圖像大小

[英]Change Image Size From Uint8List Data in Flutter

我正在嘗試從 uint8list 數據更改圖像大小。

如您所知,Flutter 中有很多 Image 類,而我想要獲得的最終圖像類型是 ui.Image。

我從套接字通信中獲取 Uint8List Image(.jpg) 數據。
現在,我想設置圖像的大小並在最后獲取 ui.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 嗎?

我調整了 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: flutter 圖像 package

您是否嘗試過使用ui.decodeImageFromList而不是ui.instantiateImageCodecgetNextFrame()

import 'dart:ui' as ui;

ui.decodeImageFromList(IMG.encodeJpg(resized), (ui.Image img) {
  // returned ui.Image
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM