Я использую пакет id3 Dart для чтения тегов, которые я написал, используя Mp3tag (настройки по умолчанию, ID3 v2.3).
ExifTool дает мне следующее для изображения:
ID3v2.3.0:
+ [ID3v2_3 directory, 250976 bytes]
| PictureMIMEType = image/jpeg
| PictureType = 3
| PictureDescription =
| Picture = .....JFIF...HH...Adobed@.................................................[snip]
| - Tag 'APIC' (248659 bytes):
| 0148: 00 69 6d 61 67 65 2f 6a 70 65 67 00 03 00 ff d8 [.image/jpeg.....]
| 0158: ff e0 00 10 4a 46 49 46 00 01 02 01 00 48 00 48 [....JFIF.....H.H]
| 0168: 00 00 ff ee 00 0e 41 64 6f 62 65 00 64 40 00 00 [......Adobe.d@..]
| 0178: 00 01 ff db 00 84 00 02 02 02 02 02 02 02 02 02 [................]
| 0188: 02 03 02 02 02 03 04 03 02 02 03 04 05 04 04 04 [................]
| [snip 248579 bytes]
Я читаю теги, как пример использования basi c:
Map<String, dynamic> tags;
var mp3instance = new MP3Instance(path);
if (mp3instance.parseTagsSync()) {
tags = mp3instance.getMetaTags();
}
tags['APIC'].toString()
отпечатки:
{
mime: image/jpeg,
textEncoding: 0,
picType: 3,
description: ,
base64: AP/Y/+AAEE...
}
Однако, когда я пытаюсь отобразить изображение:
return ListTile(
leading: Image.memory(base64Decode(song['APIC']['base64']))
);
я получаю Exception: Could not instantiate image codec.
.
Я заметил, что строка в Dart отличается от той, которую я получаю, когда использую онлайн-кодировщики. Когда я копирую и вставляю их в base64Decode()
, изображение отображается нормально.
Я предполагаю, что мне нужно выполнить какое-то преобразование, но класс преобразователя слишком честен, если честно .