【问题标题】:Convert uint8list image to a supported Image file(jpg or etc.)将 uint8list 图像转换为支持的图像文件(jpg 等)
【发布时间】:2021-04-05 00:36:57
【问题描述】:

在 android 10 和 11(SDK 编号 29 和 30)中,音乐封面(艺术品)格式与以前的版本不同,事实上,它们不能作为支持的图像文件(例如 jpg 或 png)来读取,它们是 uint8lists,只有 Image.memory 小部件接受并显示它们。

现在,我的问题是我不想将它们作为记忆图像读取,我需要 jpg 等文件。

搜索了很多!阅读了很多,发现只有 1,没有工作的解决方案! 那就是将unit8list作为字节写入文件中,其路径以“.jpg”结尾。 正如我所说,它不起作用。

有人可以帮忙吗?

提前致谢,

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 ,...]

长度:数千

【问题讨论】:

  • “它们是 uint8lists” - 你是怎么读的?他们的magic number是什么?
  • @sanghuynh 我猜你误解了我的问题!我想将 unit8list 解码为 jpg 而不是对其进行编码!
  • @pskink 对uint8lists了解不多,只知道是一种将图片压缩成字符串数据的编码方式。
  • @pskink Flutter_audio_query 包提供了它们。

标签: flutter dart flutter-layout uint8array uint8list


【解决方案1】:

要将 Uint8list 写入文件,可以使用File(String).writeAsBytes(Uint8list);。您可以在 File 对象上设置路径和文件扩展名,并在 writeAsBytes() 上传递图像字节

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

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2022-01-18
    • 1970-01-01
    • 2021-08-24
    • 2019-08-06
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多