【发布时间】:2013-03-14 08:46:30
【问题描述】:
我正在尝试使用 Silverstripe 3.0 框架生成图像并将其返回到模板,但遇到了一些问题。
我在一个变量中将它返回给浏览器,如下所示:
public function make_image(){
$string = 'string';
$im = imagecreate(300,300);
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
}
浏览器将其呈现为:
�PNG IHDR,,C�6PLTE��<��*�"IDATh���1 �Om ?�x-��{�IEND�B`�
返回的标题是 text/html,只有一个请求让我觉得那里发生了一些奇怪的事情。谁能帮我解决这个问题。
使用 Image() 类的 Silverstripe 可能是另一种实现方式?
【问题讨论】:
-
试试
header("Content-type: image/png"); -
我有,Silverstripe 中的标题是在模板渲染之前设置的。
-
<img src="my_image.png" type="image/png" />这方面的信息不多,但尝试强制图像在输出时显示正确不会有什么坏处。您是先将文件写入服务器还是立即将其放在页面上?如果我在终端中执行此操作;file -b my_png_file.png它输出;PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced。当您使用 CMS 时,可能是您的标头已发送。尝试启用error_reporting('E_ALL');看看是不是这样。很常见的问题。当您将 PHP 作为图像获取时,您只能使用图像标题。 -
我的意思是标题将使整个 PHP 页面呈现为这样。因此,如果您使用
header("Content-type: image/png");,您只能返回图像,而不能返回额外内容。结果将是这样的;<img src="my_image.php" />. -
@Allendar 我正在尝试将其直接输出到页面,但我不确定这是否是正确的方法。我将测试您的建议和下面的答案。
标签: php image httprequest httpresponse silverstripe