【问题标题】:Generated image using PHP and GD is being cut off使用 PHP 和 GD 生成的图像被切断
【发布时间】:2016-12-28 02:13:41
【问题描述】:

这只发生在实时服务器上。在多重开发服务器上,图像正在按预期创建。

直播: 红帽

$ 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 兼容)

开发: 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 特有的问题。

【问题讨论】:

  • 如果实时服务器必须是 Red Hat,为什么开发服务器不能是 Red Hat(或 CentOS,如果问题是支持合同)?
  • 因为我是在我的个人机器上开发的。设置 Redhat 盒子对我来说并非完全不可能,但我宁愿不花时间在上面。
  • 开发盒与生产盒尽可能匹配的好处通常是值得的。您可以随时将其设置为虚拟机。
  • 非常正确。让我们假设我已经设置了一个运行 Redhat 的 VM,其软件版本与实时服务器具有的所有相同的软件版本。现在是什么导致了这个问题?这是 GD 捆绑版本中的错误吗?
  • $font 和 $fontSize 分别设置为什么?你只是在发送空白变量吗?

标签: php gd


【解决方案1】:

也许您的内存不足或类似情况?您是否仔细检查了所有日志文件等?

【讨论】:

  • 请添加评论它不是回答
【解决方案2】:

它是否 100% 一致并且总是在同一个地方?如果不是,则可能是资源问题——执行脚本的时间或内存限制。尝试调整 php.ini 设置,重新启动 Web 服务器,进行测试。

【讨论】:

    【解决方案3】:

    它取决于图像吗?

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

    当尝试调整和编辑全白背景 (c. 3MB) 的 JPEG 时,它会失败。它确实适用于更大(约 4MB)和更复杂背景的其他图像。

    我发现当 GD 打开要编辑的图像时,白色背景图像比更复杂的图像增长的比例更大。某些图像的此比率导致 PHP/GD 失败并中途剪切图像。

    威廉

    【讨论】:

      【解决方案4】:

      你有没有输出过$width的值,看看是否正确?

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-10-24
          • 2016-06-09
          • 2011-09-28
          • 1970-01-01
          • 1970-01-01
          • 2011-06-14
          • 1970-01-01
          相关资源
          最近更新 更多