【问题标题】:encoding an image to base64 string将图像编码为 base64 字符串
【发布时间】:2018-10-17 08:51:32
【问题描述】:

我正在尝试使用库 image_picker.. 从 dart 中的照片库上传图像,这工作正常..

然后我尝试将所选图像转换为 bas64 字符串,如下所示:

imageSelectorGallery() async {
    _image = await ImagePicker.pickImage(
      source: ImageSource.gallery,
      // maxHeight: 50.0,
      // maxWidth: 50.0,
    );
    List<int> imageBytes = _image.readAsBytesSync();
    print(imageBytes);
    String base64Image = base64Encode(imageBytes);
    print('string is');
    print(base64Image);
    print("You selected gallery image : " + _image.path);
    setState(() {});
   }

但这总是返回一个不正确的字符串..例如:

_9j_4QG1RXhpZgAATU0AKgAAAAgABwEQAAIAAAAaAAAAYgEAAAQAAAABAAADwAEBAAQAAAABAAAFAAEyAAIAAAAUAAAAfAESAAMAAAABAAEAAIdpAAQAAAABAAAAlwEPAAIAAAAHAAAAkAAAAABBbmRyb2lkIFNESyBidWlsdCBmb3IgeDg2ADIwMTg6MTA6MTcgMTE6Mjc6NTMAR29vZ2xlAAAQgp0ABQAAAAEAAAFdgpoABQAAAAEAAAFlkpIAAgAAAAQ0NzQAkpEAAgAAAAQ0NzQAkpAAAgAAAAQ0NzQAkgoABQAAAAEAAAFtkgkAAwAAAAEAAAAAiCcAAwAAAAEAZAAAkAQAAgAAABQAAAF1kAMAAgAAABQAAAGJoAMABAAAAAEAAAUApAMAAwAAAAEAAAAAoAIABAAAAAEAAAPAkgIABQAAAAEAAAGdkgEACgAAAAEAAAGlkAAABwAAAAQwMjIwAAAAAAAAARgAAABkAJiWgDuaygAAABOIAAAD6DIwMTg6MTA6MTcgMTE6Mjc6NTMAMjAxODoxMDoxNyAxMToyNzo1MwAAAAEpAAAAZAAAGfMAAAPo_-AAEEpGSUYAAQEAAAEAAQAA_9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYGBgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK_9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK_8AAEQgFAAPAAwEiAAIRAQMRAf_EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC__EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ 2hpanN0dXZ3eHl6g4SFhoeIiYq

而且这不能转换成图片..

问题出在哪里以及如何解决?

【问题讨论】:

  • 为什么您认为这不是一个正确的字符串,“无法转换为图像”究竟是什么意思?
  • @GünterZöchbauer 我尝试在freeonlinetools24.com/base64-image 转换它,但出现错误并且图像未转换
  • @GünterZöchbauer 不,这不正是我需要的......
  • 请查看我的第一条评论。

标签: dart flutter


【解决方案1】:

您只将编码字符串的前 1024 个字符复制到问题中。也许print 命令截断了它。此外,在线工具似乎更喜欢(需要?) URL 安全版本,因此正如 Günter 所说,使用 base64UrlEncode

要确认您使用的字符串长度大致正确,请添加 33%。也就是说,一张 2k 的图片会转换成大约 2667 个字符长的字符串。

【讨论】:

  • 是的,我认为字符串没有完全打印出来.. 尝试用另一种方式检查,它被正确转换了!谢谢:)
  • @lamatat 你如何检查 image64 是否正常?
  • 我想知道为什么它甚至截断它,使调试过程变得一团糟。谢谢,理查德
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多