【问题标题】:header('Content-Type: image/png'); not working anymore?header('Content-Type: image/png');不再工作了?
【发布时间】:2014-04-28 22:58:00
【问题描述】:

我已经多次尝试了描述中的字符串。但它一直输出字符串而不是图像。链接在这里http://wenti.de/resize.php

源码如下,

$my_img = imagecreate( 200, 80 );
$background = imagecolorallocate( $my_img, 0, 0, 255 );
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
$line_colour = imagecolorallocate( $my_img, 128, 255, 0 );
imagestring( $my_img, 4, 30, 25, "thesitewizard.com",
  $text_colour );
imagesetthickness ( $my_img, 5 );
imageline( $my_img, 30, 45, 165, 45, $line_colour );

header( "Content-type: image/png" );
imagepng( $my_img );
imagecolordeallocate( $line_color );
imagecolordeallocate( $text_color );
imagecolordeallocate( $background );
imagedestroy( $my_img );

有没有base64转换的解决方法?

【问题讨论】:

  • 刚刚测试我得到了一个不错的图像。你有安装 GD 库吗?
  • 尝试在我的 domainprovider 上运行它
  • 您可能是对的,但是否还有另一种显示图像的可能性。我需要这个用于转换类。否则我猜我可能需要使用 base64 转换。
  • 你的代码很好,如果我在我的网络服务器上测试它就可以工作。所以问题是,标头函数不会改变内容类型。也许这可以帮助:stackoverflow.com/questions/2508718/…
  • 看起来您的 PHP 脚本正在发出 UTF-8 BOM(字节顺序标记)。确保您的 .php 文件使用 ASCII 字符集保存。

标签: php string image png


【解决方案1】:

您的 PHP 脚本在输出 PNG 图像内容之前发出 UTF-8 字节顺序标记 (EF BB BF)。此标记可能导致 PHP 将内容类型默认为 text/html。您随后设置标头的调用将被忽略,因为 PHP 已发送 BOM。

BOM 可能已被文本编辑器放置在 PHP 脚本中的开始标记之前,因为它以 UTF-8 格式保存文件。将编辑器中的格式更改为 ANSI/ASCII,以便不写入 BOM。

或者,您可以尝试在更改标头之前调用 PHP 的 ob_clean() 函数来清除输出缓冲区。

【讨论】:

  • ASCII 不好,我们只想摆脱 BOM。每个现代编辑器都可以使用没有 BOM 的 UTF 编码保存文件(记事本不是现代文本编辑器:P)。
  • 通过放置 ob_clean() header('Content-Type: image/png');和图像PNG();开始工作了。
  • 非常感谢,乔恩!我使用了 ob_clean() 并且它在我的情况下有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多