【问题标题】:GD imagefilter no image outputGD imagefilter 无图像输出
【发布时间】:2013-06-03 16:09:45
【问题描述】:

我正在尝试使用 GD imagefilter 将 jpg 图像转换为灰度图像,但我无法将过滤后的图像输出到浏览器上。我用这个代码

<?php 
$thumb="w=250&q=100";
$imgstring = get_image('cover_image',1,1,0,NULL,$thumb);
$im = imagecreatefromjpeg($imgstring);
imagefilter($im, IMG_FILTER_GRAYSCALE);
header("Content-type: image/jpg");
imagejpeg($im);
imagedestroy($im);
?>

**$imgstring是图片的url字符串('http://xxx.xx/image.jpg')。

对于标题内容行,结果是一个错误“警告:无法修改标题信息 - 标题已由...发送”,后跟似乎是图像代码(大量问号字符和其他垃圾)。

如果没有标题内容行,结果只是图像代码(?)(符号和字符)

怎么了?

【问题讨论】:

    标签: php gd imagefilter


    【解决方案1】:

    错误正是它所说的 - 您的代码中的某些内容导致执行输出,这会终止 header() 调用,从而阻止设置内容类型。在没有任何有效的内容类型标头的情况下,客户端浏览器假定为 text/plain,并将您的 JPEG 图像显示为原始“垃圾”。

    您需要弄清楚在您的代码中执行输出的位置(我愿意打赌它在 get_image() 函数中,并消除它。

    【讨论】:

    • 非常感谢您的帮助,但我仍然无法弄清楚。
    • “无法修改标头”错误行消息将准确告诉您执行输出的位置,直至文件名/行号。你需要看看那里。
    • 这是我收到的警告消息:警告:无法修改标头信息 - 标头已发送(输出开始于 /xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/header.php: 3)在/xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/xxxx/第98行第3行header.php是这样的:w3.org/1999/xhtml" > 我的模板页面的第 98 行是这样的: header('Content-type: image/jpeg'); (jpeg 的标题,用于将图像显示为图像而不是文本)
    • 是的,所以您正在输出纯文本,这是输出,它会杀死 header('content-type: image/jpeg') 调用。如果您希望此 jpg 代码正常工作,则无法输出 ANYTHING。
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    相关资源
    最近更新 更多