Код изображения c исключение при попытке отобразить изображение тега ID3 во флаттере - PullRequest
0 голосов
/ 22 февраля 2020

Я использую пакет 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(), изображение отображается нормально.

Я предполагаю, что мне нужно выполнить какое-то преобразование, но класс преобразователя слишком честен, если честно .

...