我可以使用php从我的mp3应用程序中成功获取mp3 ID3标签。我留下了一个巨大的BLOB。我确信这很简单,但我只需要一个正确方向的帮助。我想最终得到的是(BLOB DATA CORRECTED):
$media_year = implode($ThisFileInfo['comments_html']['year']);
$media_genre = implode($ThisFileInfo['comments_html']['genre']);
$media_jpg = [BLOBDATA];
(我知道没有编程意义,但你明白了。前两行对我来说很好,但我不知道如何从ID3标签中获取BLOBDATA并将其转换为我可以显示的JPG。)
在另一个教程中,我看到了这一点,但它没有为我连接点:
[comments] => Array
(
[picture] => Array
(
[0] => Array
(
[data] => <binary data>
[image_mime] => image/jpeg
)
)
)
我讨厌要求读者“为我做”,请原谅我。但我已经尝试了我能找到的每一种资源。任何帮助都非常感激。
答案 0 :(得分:9)
我使用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">
在此代码中,我将图片嵌入到带有base64_encode
的HTML中,您可以看到
答案 1 :(得分:2)
您可以使用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'];
答案 2 :(得分:0)
我发现了一篇解释ID3标签结构的文章。 http://www.stagetwo.eu/article/19-MP3-ID3-Tags-Wie-kann-man-die-teile-lesen 这应该使您能够理解并解析它们。 这是德语,但也许关于ID3标签结构的文章也可以通过谷歌翻译阅读。 我喜欢重要字节的描述,例如关于SyncSafe整数的解释。
对于您的问题,它描述了APIC(图像)帧的结构。
当您解析这些结构并获得字节流时,只需使用imagecreatefromstring($byteStream)
现在你的图像资源来自MP3:)