我正在将 PHP 中的一些透明 PNG 与 GD 合并。我在透明背景上完成了一堆数字,然后将它们组合成最终图像。使用以下 GD 配置在一台服务器上运行脚本:
GD Support => enabled
GD Version => bundled (2.0.34 compatible)
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.2.1
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.2.10
WBMP Support => enabled
XPM Support => enabled
XBM Support => enabled
它完美地工作。我的结果看起来像:
http://upload.nucleardog.com/rc97
当我在另一台服务器上运行相同的脚本时,gd 配置如下:
GD Support => enabled
GD Version => 2.0
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.2
T1Lib Support => enabled
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.2.44
WBMP Support => enabled
我最终得到的东西看起来更像:
http://upload.nucleardog.com/19c3
有谁知道为什么透明度无法以这种不一致的方式复制?复制到结果图像中不同位置的相同数量的不同副本(相同的源图像 - 未在其间重新加载)在黑色像素中具有不同的图案。
任何想深入研究的人都可以在此处获得我正在使用的脚本的副本。它加载 line 周围的数字69
。它将数字复制到位于 的中间图像上155-165
。该中间步骤被复制到结果图像上197-231
。
有谁知道我如何在这个特定的服务器上修复脚本?不使用捆绑的 GD 是否有问题?
感谢您的任何想法!
编辑:有问题的机器正在运行 PHP 5.3.3:
adam:~$ php -v
PHP 5.3.3-1ubuntu9.3 with Suhosin-Patch (cli) (built: Jan 12 2011 16:07:38)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
adam:~/$
没有的运行相同:
adam@server1 [~]$ php-cli -v
PHP 5.3.3 (cli) (built: Aug 18 2010 16:36:42)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd.
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
adam@server1 [~]$
有问题的是一个 Ubuntu 盒子。php 和 gd 都是从 apt(php5 和 php5-gd)安装的。