Как я могу извлечь обложку альбома из тега MP3 ID3?

Я могу успешно получить mp3 ID3-тэги из своего mp3-приложения, используя php. Я остался с огромным BLOB. Я уверен, что это довольно просто, но мне нужна небольшая помощь в правильном направлении. Я бы хотел, чтобы это закончилось (BLOB DATA CORRECTED):

$media_year = implode($ThisFileInfo['comments_html']['year']); $media_genre = implode($ThisFileInfo['comments_html']['genre']); $media_jpg = [BLOBDATA]; 

( Я знаю, что это не имеет никакого программирования, но вы поняли, что первые две строки отлично работают для меня, но я не знаю, как получить BLOBDATA из тегов ID3 ​​и преобразовать его в JPG, который я могу отобразить. )

В другом учебнике я вижу это, но он не связывает точки для меня:

 [comments] => Array ( [picture] => Array ( [0] => Array ( [data] => <binary data> [image_mime] => image/jpeg ) ) ) 

Я ненавижу просить читателей «сделать это за меня», пожалуйста, простите меня. Но я пробовал каждый ресурс, который я могу найти. Любая помощь в высшей степени оценена.

Я использую библиотеку getid3 для этой работы отлично, как

  <?php $Path="mp3 file path"; $getID3 = new getID3; $OldThisFileInfo = $getID3->analyze($Path); if(isset($OldThisFileInfo['comments']['picture'][0])){ $Image='data:'.$OldThisFileInfo['comments']['picture'][0]['image_mime'].';charset=utf-8;base64,'.base64_encode($OldThisFileInfo['comments']['picture'][0]['data']); } ?> <img id="FileImage" width="150" src="<?php echo @$Image;?>" height="150"> 

в этом коде я встроен в HTML с base64_encode который вы можете видеть

вы можете использовать file_put_contents (), чтобы сохранить данные изображения id3 в файл.

  $path = "/Applications/MAMP/htdocs/site/example.mp3"; //example. local file path to mp3 $getID3 = new getID3; $tags = $getID3->analyze($Path); if (isset($tags['comments']['picture']['0']['data'])) { $image = $tags['comments']['picture']['0']['data']; if(file_put_contents(FCPATH . "imageTest.jpg", $image)) { echo 'Image Added'; } else { echo 'Image Not Added'; } } 

или вы можете отобразить изображение на месте, используя

 header('Content-Type: image/jpeg'); echo $tags['comments']['picture']['0']['data']; 

Я нашел статью, которая объясняет структуру тегов ID3. http://www.stagetwo.eu/article/19-MP3-ID3-Tags-Wie-kann-man-die-teile-lesen Это должно помочь вам понять и проанализировать их. Это на немецком языке, но, возможно, статья о структуре тэгов ID3 ​​также читается с помощью переводчика google. Мне нравится описание важных байтов и, например, объяснение целого числа SyncSafe.

В вашей проблеме описывается структура структуры APIC (Image). Когда вы проанализировали эту структуру, и вы получили bytestream, просто используйте imagecreatefromstring($byteStream) Теперь у вас есть ресурс изображения из MP3 🙂