PHP输出图像问题
Posted
技术标签:
【中文标题】PHP输出图像问题【英文标题】:PHP output image issues 【发布时间】:2012-05-03 00:16:18 【问题描述】:if (file_exists($path))
$fileContent = id3_getImage($path);
$fileMime = id3_getMimeOfImage($path); // is set to image/jpeg
if ($fileMime != "")
header('Content-Type: '.$fileMime);
print($fileContent);
die;
所以上面的代码在浏览器中不起作用,但是当我用图像制作图像时
$img = imagecreatefromstring($fileContent);
imagejpeg($img, 'test.jpg');die;
图像已创建,我可以在我的计算机上查看它。所以我不知道我做错了什么:(
*可能是 apache conf 中的设置吗?老实说,我对此一无所知
【问题讨论】:
我需要动态创建图像,因此创建图像然后将它们重定向到该路径并不是一个真正的选项。无论如何,它应该以这种方式工作 只需使用imagejpeg($img, NULL);
请解释一下 id3_getImage() 和 id3_getMimeOfImage() - 这些不是有效的运算符。
这是一个自定义函数,使用类 getid3 (getid3.sourceforge.net),我确信 $var 的内容是正确的,因为使用 imagejpeg 可以生成有效的图像。
因为我正在从音乐文件中检索封面以将其显示在网站上。
【参考方案1】:
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($img);
您需要先发送标头。但是,如果您想创建图像并显示,则需要创建并为浏览器阅读此内容。
readfile($filename);
你可以在这里读到这个人: http://php.net/manual/en/function.readfile.php
【讨论】:
我不确定你的意思,你不需要使用 readfile($filename) 因为文件的内容与 $var 中的内容相同,并且它们都将其打印到浏览器 你需要使用imagejpeg($img, 'test.jpg');
和readfile('test.jpg');
我不确定,因为我认为它会有相同的输出,但无论如何我已经测试过了,没有结果:(
如果你使用的是文件名文件,你不会在浏览器上发送结果。那只是为了保存文件。但是如果你想保存文件并在浏览器上打印,你需要使用readfile()
。如果您只想在浏览器上打印图像,您可以使用 imagejpeg()
而不使用 $filename
var。
我不想保存图像,并且使用 imagejpeg 不起作用。这就是为什么我不知道错误是什么原因造成的,因为它实际上应该可以工作。【参考方案2】:
我使用 Google Groups 中的 smartReadFile.php 来显示任何类型的文件。
https://jplayer.googlegroups.com/attach/f308294ddea52f6c/smartReadFile.php?view=1&part=4
真的很聪明。 =)
<?php
require "smartReadFile.php";
$dir = 'images/';
$filename = 'someimage' . '.jpg';
$location = $dir.$filename;
smartReadFile($location, $filename);
?>
【讨论】:
使用它但仍然无法正常工作,我想我需要在我的 apache conf 中更改一些东西。由于 URL 没有扩展名 .jpg,实际上它没有任何扩展名。这只是/cover/【参考方案3】:从 DB 读取时,这个对我有用
$image = imagecreatefromstring([path/DBfiels]);
header('content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
【讨论】:
以上是关于PHP输出图像问题的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 PHP imgpng 将图像输出到浏览器时,我得到一个损坏的图像