为什么php7.2写入文字到图片,图片变成乱码?

如图:
image.png

gd库和freetype都安装好了,phpinfo();检查无问题
代码:(前面没有任何其他语句了,这些是文档里唯一的内容)

<?php
header("content_type:image/jpeg");
$im = imagecreatefromjpeg('WechatIMG4.jpeg');
$textcolor = imagecolorallocate($im, 255, 255, 255);
$fnt = "/Users/atlantico/websites/php/jpgraph-4.3.0/src/fonts/Taipei-Sans-TC-Beta-Bold-2.ttf";
$motto = iconv("utf-8", "gb2312", "长白山天池");
imageTTFText($im, 22, 0, 48, 34, $textcolor, $fnt, $motto);
imagejpeg($im);
imagedestroy($im);
?>

iconv();两个编码是反着顺序写的,因为按照教材写反而会报错(如图):
image.png

另:
按照一下两种方法写也会乱码:

<?php
header("content_type:image/jpeg");
$im = imagecreatefromjpeg('WechatIMG4.jpeg');
imagejpeg($im);
imagedestroy($im);
?>
<?php
$im = imagecreatefromjpeg('WechatIMG4.jpeg');
imagejpeg($im);
imagedestroy($im);
?>

难道与文字输入无关,是imagecreatefromjpeg或imagejpeg的问题?

阅读 2.9k
2 个回答

Headers Line 的键值是使用短划线(-) 连接,首字母大写,冒号后面有一个空格。

header("Content-Type: image/jpeg");

另:

<?php
header("Content-Type: image/jpeg");
$im = imagecreatefromjpeg('WechatIMG4.jpeg');
$textcolor = imagecolorallocate($im, 255, 255, 255);
$fnt = "/Users/atlantico/websites/php/jpgraph-4.3.0/src/fonts/Taipei-Sans-TC-Beta-Bold-2.ttf";
$motto = '长白山天池';
imageTTFText($im, 22, 0, 48, 34, $textcolor, $fnt, $motto);
imagejpeg($im);
imagedestroy($im);
?>

把iconv的部分删了。留着反而会乱码(猜测是已经自动转码utf-8了)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题