使用 getID3 在浏览器中显示图像

Posted

技术标签:

【中文标题】使用 getID3 在浏览器中显示图像【英文标题】:Display image in browser with getID3 【发布时间】:2018-05-06 09:55:03 【问题描述】:

我想创建一个 php 文件,该文件在 html 的 img 标记中作为 src 参数调用时将返回 mp3 歌曲的图像。像这样的:

<img src="/imageReturn.php?song=SongName">

为了从 mp3 文件中获取图像,我使用了 getID3 库。我的 PHP 代码:

$song= $_GET["song"];
require_once("getID3-1.9.15/getid3/getid3.php");
$Path=$song.".mp3";

$getID3 = new getID3;
$OldThisFileInfo = $getID3->analyze($Path);
if(isset($OldThisFileInfo['comments']['picture'][0]))

    $ImageBase='data:'.$OldThisFileInfo['comments']['picture'][0]['image_mime'].';charset=utf-8;base64,'.base64_encode($OldThisFileInfo['comments']['picture'][0]['data']);


header('Content-Type: image/jpeg');
echo $ImageBase;

问题是我无法让 php 显示图像。如何解决?

【问题讨论】:

尝试通过直接浏览/imageReturn.php?song=SongName 来调试并评论header('Content-Type: image/jpeg'); 行。显示什么?也许使用var_dump($ImageBase); 来获取更多信息。 @Syscall 通过注释标题行,我得到了图像的 base64 格式。 var_dump 显示 string(277121) "data:image/jpeg;charset=utf-8;base64,/9j/4AAQSk...... 你会直接去/imageReturn.php?song=SongName 那里有标题行吗? @Dave 我得到了图像显示的黑色背景,而中心没有任何图像。 【参考方案1】:

您不必将图像编码为base64,您可以直接echo图像数据。

$getID3 = new getID3;
$OldThisFileInfo = $getID3->analyze($Path);
if(isset($OldThisFileInfo['comments']['picture'][0]))

    header('Content-Type: ' . $OldThisFileInfo['comments']['picture'][0]['image_mime']);
    echo $OldThisFileInfo['comments']['picture'][0]['data'];
    die;

【讨论】:

以上是关于使用 getID3 在浏览器中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新闪烁的情况下在浏览器中显示不断变化的图像文件?

ASP.NET - 如何在浏览器中显示图像而不将图像保存在临时文件中?

SVG 嵌入图像仅在浏览器中显示

如何转换保存在db中的二进制图像数据并在浏览器中显示

在 intelij 获得焦点之前,浏览器不会显示上传的图像

保存网络浏览器中显示的图像