使用PHP和GD生成的图像已被切断

时间:2020-03-06 14:40:52  来源:igfitidea点击:

这仅在实时服务器上发生。在乘法开发服务器上,将按预期创建映像。

居住:
红色的帽子

$ php --version
PHP 5.2.6 (cli) (built: May 16 2008 21:56:34) 
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

GD支持=>启用
GD版本=>捆绑(兼容2.0.34)

DEV:
的Ubuntu 8

$ php --version
PHP 5.2.4-2ubuntu5.3 with Suhosin-Patch 0.9.6.2 (cli) (built: Jul 23 2008 06:44:49) 
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

GD支持=>启用
GD版本=> 2.0或者更高

<?php
$image = imagecreatetruecolor($width, $height);

// Colors in RGB
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0); 

imagefilledrectangle($image, 0, 0, $width, $height, $white);

imagettftext($image, $fontSize, 0, 0, 50, $black, $font, $text);
imagegif($image, $file_path);
?>

在理想情况下,我希望实时服务器和开发服务器运行相同的发行版,但是实时服务器必须是Red Hat。

我的问题是,是否有人知道使用捆绑版的GD会导致图像的最右边部分被切断的具体差异?

编辑:我没有用完内存。日志文件中没有生成任何错误。就PHP而言,图像是正确生成的。这就是为什么我认为捆绑版本是GD特有的问题。

解决方案

也许内存不足或者其他类似的东西?我们是否仔细检查了所有日志文件等?

它是100%一致且始终在同一位置吗?如果没有,执行脚本或者内存限制可能是资源问题。尝试调整php.ini设置,重新启动Web服务器,进行测试。

是否取决于图像?

最近,我在PHP和GD中发现了一个奇怪的错误/功能。

尝试调整和编辑全白色背景(约3MB)的JPEG大小时,它将失败。它可以与其他较大的图像(约4MB)和更复杂的背景一起使用。

我得出的结论是,当GD打开图像进行编辑时,白色背景图像的增长比复杂图像的增长更大。对于某些图像,该比率导致PHP / GD失败,并且图像被剪切一半。

威廉

我们是否有$ width输出的值来查看它是否正确?

可能不是图像被剪切掉了。可能是文本被截断了。

imagettftext($image, $fontSize, 0, 0, 50, $black, $font, $text);

TTF字体有开销和填充。尝试使用更大的画布,看看是否获得相同的结果。