PHP 5:如何编写UTF-8二进制数据 - 图像 - 输出?(PHP 5: how to writ

2019-10-17 08:51发布

我有一个Ubuntu的服务器和PHP5和PHP脚本文件,所有的输出都是UTF-8。 我试图将图像发送到输出流,但只是乱码中国文字输出显示出来:

$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

有什么建议么?

Answer 1:

您的代码工作完全正常我的机器上:

<?php
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

die;
?>

你确定你是不是该代码之前或之后outputing 什么 ? 即使是任何类型的空白将是麻烦的源泉。

或者,也许你的脚本是做一些别的地方?


如果还是不行,也许,试图imagettftext ,使用比所用的那些“更好” /更完整的字体imagestring可能帮助?

使用这样的事情,比如:

$font = '/usr/share/fonts/truetype/msttcorefonts/arial.ttf';
imagettftext($im, 20, 0, 10, 20, $text_color, $font, 'A Simple éléphant String');


顺便说一句,你有没有尝试没有那些行:

header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

如果有错误/警告/通知,删除这些行可能会帮助你看到这些。


而且,作为一个旁注:使用JPEG对于包含一些文字一般不给予了很大的成效,为JPEG是一种破坏性压缩机制的图像。 使用PNG,在这种情况,可能会带来更好的效果;-)



Answer 2:

尝试删除UTF-8字节顺序标记,因为它可以让前置到您的JPEG图像的内容,使其无效。



文章来源: PHP 5: how to write utf-8 binary data - image - to output?
标签: php file utf-8