【问题标题】:Flutter convert Image to base64 and base64 String to Image [duplicate]Flutter将Image转换为base64,将base64字符串转换为Image [重复]
【发布时间】:2019-09-22 11:04:04
【问题描述】:

您好,我想将图像转换为 base64 字符串,然后将其转换回图像。 我就是这样做的:

 File pickedImage = await ImagePicker.pickImage(
      source: ImageSource.gallery
    );
 List<int> test = pickedImage.readAsBytesSync();
 String test2 = base64Encode(test);
 Uint8List test3 = base64Decode(test2);
 File test4 = new File.fromRawPath(test3);
 FirebaseVisionImage ourImage = FirebaseVisionImage.fromFile(test4);

我得到一个错误,当我想打印 test4 时,我只得到问号。当我打印pickImage时,我得到了这个:

File: '/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20190503-WA0005.jpg'

【问题讨论】:

  • File.fromRawPath 占用的字节不是文件的内容

标签: android ios dart flutter


【解决方案1】:

您似乎已经完成了将图像转换为 base64 并返回的所有工作:

List<int> imageBytes = pickedImage.readAsBytesSync();
String imageB64 = base64Encode(imageBytes);
Uint8List decoded = base64Decode(imageB64);

至于将它用于您的FirebaseVisionImage,我不确定我能提供多少帮助,因为我没有使用该课程的经验(我假设您使用的是 firebase_ml_vision 库)。然而,查看FirebaseVisionImagesource,有一个用于fromBytesfromFile 的工厂构造函数,尽管使用起来有点复杂。但是,如果您可以让它工作,那可能是更适合您需求的构造函数:

// Metadata values based on an RGBA-encoded 1920x1080 image
// You will have to change these values to fit your specific images
final planeMetadata = FirebaseVisionImagePlaneMetadata(
    width: 1920,
    height: 1080,
    bytesPerRow: 1920 * 4,
);

final metadata = FirebaseVisionImageMetadata(
    size: Size(1920, 1080),
    planeData: planeMetadata,

    // From https://developer.apple.com/documentation/corevideo/1563591-pixel_format_identifiers?language=objc
    // kCVPixelFormatType_32RGBA
    rawFormat: 'RGBA', 
);

final visionImage = FirebaseVisionImage.fromBytes(decoded, metadata);

或者,您可以将字节保存到临时文件并使用它:

// Assuming the source image is a PNG image
File imgFile = File('tempimage.png');
imgFile.writeAsBytesSync(decoded.ToList());

final visionImage = FirebaseVisionImage.fromFile(imgFile);

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 2019-07-15
    • 2017-12-20
    • 2018-04-10
    • 2016-08-11
    • 2014-05-10
    • 2017-07-28
    • 2014-03-14
    相关资源
    最近更新 更多