PHP动态图像无法正常显示

时间:2017-03-19 04:05:49

标签: php php-7 php-gd

我刚刚将一个站点移动到运行PHP 7的新服务器上。我相信它最初是在PHP 5.4上。以下URL应显示包含代码的图像,如验证码:

http://appreviewhelper.com/static/captcha/GkK9yEiaw6

点击该URL后,将运行以下代码:

$code=rand(1000,9999);
$code = (string)$code;
$_SESSION["code"]=$code;

$im = imagecreate(50, 24);
$bg = imagecolorallocate($im, 238, 238, 238); //background color blue
$fg = imagecolorallocate($im, 85, 85, 85);//text color white
imagefill($im, 0, 0, $bg);
imagestring($im, 5, 5, 5,  $code, $fg);

header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
header("Content-Disposition: inline; filename=captcha.png");
imagepng($im);

imagedestroy($im);

exit();

它在旧服务器上工作正常。我已经确保安装了PHP GD库并且模块已经启用,并且我已经一遍又一遍地验证了......但是,我仍然得到一个小的空白图像。有什么想法吗?

由于

编辑:以下是从该网站的gd_info()输出:

    array(12) {
  ["GD Version"]=>
  string(5) "2.1.1"
  ["FreeType Support"]=>
  bool(true)
  ["FreeType Linkage"]=>
  string(13) "with freetype"
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(true)
  ["JPEG Support"]=>
  bool(true)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XPM Support"]=>
  bool(true)
  ["XBM Support"]=>
  bool(true)
  ["WebP Support"]=>
  bool(true)
  ["JIS-mapped Japanese Font Support"]=>
  bool(false)
}

1 个答案:

答案 0 :(得分:0)

我自己回答是因为,经过数小时和数小时后,我发现了问题所在。客户端使用Dropbox与我共享文件。显然,Dropbox将文件转换为Unicode。因此,具有图像生成代码的文件在输出图像之前发送BOM,导致图像看起来已损坏。将文件的编码更改为UTF-8修复了问题...

感谢观看和回复的人的时间。