Хотя я обычно защищаю решение msw, на этом сайте, похоже, нет библиотеки для Flash. Однако он ДЕЙСТВИТЕЛЬНО имеет спецификацию ID3v2. Если вы посмотрите на раздел 4., ID3v2 frame overview
, вы увидите, что заголовок фрейма включает размер фрейма, не включая заголовок. Я считаю, что можно с уверенностью предположить, что размер изображения можно рассчитать оттуда.
PD: Я предполагаю, что вы знаете, как работают теги ID3v2. В случае, если вы этого не сделаете, я рекомендую вам хотя бы бегло взглянуть на спецификацию. По сути, есть заголовок, расширенный заголовок, затем один или несколько кадров, содержащих данные тега (один кадр на датум) и, наконец, заполнение.
РЕДАКТИРОВАТЬ: В целях тестирования я открыл один из моих MP3-файлов с известными данными тегов в моем шестнадцатеричном редакторе. Нашел кадр с именем APIC
, скопировал указанное количество байтов в новый файл и сохранил его как test.jpg
. Не совсем работал.
Копнув дальше, я нашел спецификацию кадра. В частности, раздел 4.14, attached picture
, который описывает своего рода «подзаголовок» для кадра (1-байтовое кодирование текста, MIME-тип с нулевым разделителем, 1-байтовый тип изображения и описание с нулевым разделителем). Поэтому я вырезал эту информацию из данных и скопировал оставшуюся часть в новый jpg, который Windows смогла показать.
Поэтому методика такова:
- Получить размер кадра из заголовка кадра.
- Разберите начало кадра для подзаголовка кадра и удалите его. (Где-то между 4 и бесконечными байтами)
- Рассчитать размер изображения на основе оставшегося количества байтов.
person
Kyte
schedule
16.04.2011