将 uint8list 图像转换为支持的图像文件(如 jpg 等)。

7
在Android 10和11(SDK编号为29和30)中,音乐封面(艺术品)格式与之前的版本不同,实际上,它们不能读取为支持的图像文件,如jpg或png,而是uint8lists,只有Image.memory小部件才能接受和显示它们。
现在,我的问题是我不想将它们作为内存图像读取,我需要像jpg等文件。
搜索了很多!阅读了很多,只找到了一个不起作用的解决方案! 那就是将unit8list作为字节写入以“.jpg”结尾的文件中。正如我所说,这不起作用。
有人可以帮忙吗?
提前感谢,<3。
final io.File image = File('directory/image.jpg').create();
image.writeAsBytesSync(uint8list);

uint8list样本:[255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,226,2,40,73,67,67,95,80,82,...]

长度:数千


你可以阅读这个结果:https://dev59.com/6a_la4cB1Zd3GeqPtnsQ - sanghuynh
@sanghuynh,我想你误解了我的问题!我想要将unit8list解码为jpg而不是编码它! - M.Taha Basiri
@pskink,我对uint8lists不是很了解,只知道它是一种将图像压缩为字符串数据的编码方法。 - M.Taha Basiri
您的uint8list是有效的图像数据,如果Image.memory可以解码它,那么如果您正确编写数据,Image.file也会正常工作。 - pskink
你有检查过我的答案吗?它可能有帮助。 - MαπμQμαπkγVπ.0
显示剩余4条评论
1个回答

5

如果你想将Uint8list写成文件,可以使用File(String).writeAsBytes(Uint8list);。你可以在File对象上设置路径和文件扩展名,并通过writeAsBytes()传递图像字节。

Uint8List imageBytes;
File('image.jpg').writeAsBytes(imageBytes);

你有任何想法,如何在Flutter中将Uint8List编写为图像数据类型? - saddam
如果您正在涉及Image小部件,您可以使用Image.memory(Uint8List) - Omatt
不,我没有在小部件中使用那个。 - saddam
你是怎么知道图片的格式的,你想以.jpg.png等结尾的path呢? - Tayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接