简体   繁体   English

Flutter 展示包:image/image.dart:Image in UI Widget

[英]Flutter display package:image/image.dart:Image in UI Widget

We can work on images in Flutter using import 'package:image/image.dart' as ToolsImage;我们可以使用import 'package:image/image.dart' as ToolsImage;在 Flutter中处理图像; package to scale them with ToolsImage.copyResize() and manipulate individual pixels with ToolsImage.Image.getPixel(x,y)包以使用ToolsImage.copyResize()缩放它们并使用ToolsImage.Image.getPixel(x,y)操作单个像素

To display image from memory bytes ( ByteData / Uint8List / List<int> ) we can use MemoryImage :要显示来自内存字节( ByteData / Uint8List / List<int> )的图像,我们可以使用MemoryImage

Container(child: Image(image: MemoryImage(image.data.buffer.asUint8List())))

I'm getting an exception:我遇到了一个例外:

Exception: Invalid image data

whichever List I use.无论我使用哪个列表。 What's wrong?怎么了?

Remember to add HEADER to image bytes after format conversions!记得在格式转换后将HEADER 添加到图像字节

ByteData imageByteData = await rootBundle.load('res/images/basic/dizzy-face.png');
List<int> values = imageByteData.buffer.asUint8List();
ToolsImage.Image? photo = ToolsImage.decodeImage(values);
photo = ToolsImage.copyResize(photo!, height: 32, width: 32);

removes header information (pixel-by-pixel manipulation removes header info).删除标题信息(逐像素操作删除标题信息)。

Use:利用:

List<int>? imageWithHeader = ToolsImage.encodeNamedImage(TEST_IMAGE, ".bmp");

and then:接着:

Container(child: Image(image: MemoryImage(Uint8List.fromList(imageWithHeader))))

Last line enables us to convert package:image/image.dart to package:flutter/src/widgets/image.dart (UI Image Widget)最后一行使我们能够将package:image/image.dart转换为package:flutter/src/widgets/image.dart (UI Image Widget)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM