PHP回显jpeg图像失败,但将相同的图像写入文件非常有效。为什么?

PHP回显jpeg图像失败,但将相同的图像写入文件非常有效。为什么?,php,image,curl,jpeg,Php,Image,Curl,Jpeg,我在PHP中有一个函数,它调用curl来检索图像。当我将其打印到文件并在浏览器中检查时,图像看起来很棒。当我使用curl结果的“echo”作为PHP脚本的返回值时,浏览器会显示断开的图像图标(请参见该图标的示例:) 有什么想法吗?救命啊 请确保设置了正确的旋度参数 这个例子很适合我: <?php $ch = curl_init ("http://www.google.com/images/logos/ps_logo2.png"); curl_setopt($ch, CURLOPT_HEA

我在PHP中有一个函数,它调用curl来检索图像。当我将其打印到文件并在浏览器中检查时,图像看起来很棒。当我使用curl结果的“echo”作为PHP脚本的返回值时,浏览器会显示断开的图像图标(请参见该图标的示例:)


有什么想法吗?救命啊

请确保设置了正确的旋度参数

这个例子很适合我:

<?php 
$ch = curl_init ("http://www.google.com/images/logos/ps_logo2.png");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$image=curl_exec($ch);
curl_close ($ch);
header("Content-Type: image/png");
echo $image;
?>

答案取决于你所说的“破碎”是什么意思。如果图像的上半部分出现,但下半部分没有出现,则可能是由于丢弃的数据包(空缓存、刷新、重试)导致缓存中存在错误的版本,或者是由于使用了太多资源或运行时间太长而过早地断开了脚本。如果清空缓存不能解决问题,请检查php.ini设置,看看增加脚本的生存时间或最大内存是否可以解决问题


如果图像是一堆毫无意义的ASCII码,那么在代码中的这一点之前,您会回显一些内容或发送一个标题。最常见的看不见的原因是在您的
之前有一个空行。结果发现,我有另一个PHP文件,它正在写入一个额外的换行符。在“?>”行之后的文件末尾有一个换行符。

检查在设置标题之前或设置标题时没有意外回音。这样图像就不会被破坏,他会收到一个简单的旧错误消息。实际上,他不会收到错误消息。当浏览器将图像解释为ASCIIF以供将来参考时,他会收到一串jibberish:下次在浏览器中收到损坏的图像图标时,这是一条通用错误消息,对调试没有用处。而是复制图像的URL并直接在web浏览器中访问它。有时,您会看到一条错误消息,它会准确地告诉您问题出在哪里。所谓断开,我的意思是,我在浏览器中得到了断开的图像图标。(此图标:)另请注意,这就是为什么某些PHP项目采用了在文件末尾省略?>的做法,以避免此类问题。
<?php 
$ch = curl_init ("http://www.google.com/images/logos/ps_logo2.png");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$image=curl_exec($ch);
curl_close ($ch);
header("Content-Type: image/png");
echo $image;
?>