合并透明 PNG 会导致黑点不一致
我正在将 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
有谁知道为什么透明度无法以如此不一致的方式复制?复制到结果图像中不同位置的相同数量的不同副本(相同的源图像 - 之间未重新加载)在黑色像素中具有不同的图案。
任何想要深入研究的人都可以在此处获取我正在使用的脚本的副本。它加载第 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)。
I'm merging some transparent PNGs in PHP with GD. I have a bunch of numbers done up on a transparent background that I put together onto a final image. Running the script on one server with the following GD config:
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
It works perfectly. My result looks something like:
http://upload.nucleardog.com/rc97
When I run the same script on another server, gd configured as such:
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
I end up with something that looks more like:
http://upload.nucleardog.com/19c3
Does anyone have any idea why the transparency is failing to copy in such an inconsistent manner? Different copies of the same number (identical source image - not reloaded in between) copied into different places in the result image have a different pattern in the black pixels.
A copy of the script I'm using is available here for anyone that would like to dig through. It loads the numbers around line 69
. It copies the numbers on to an intermediate image at 155-165
. That intermediate step is copied onto the result image at 197-231
.
Does anyone have any idea how I could fix the script on this specific server? Is it an issue with it not using the bundled GD?
Thanks for any ideas!
Edit: The machine with issues is running 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:~/$
The one without is running the same:
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 [~]$
The one with the problems is a Ubuntu box. Both php and gd were installed from apt (php5 and php5-gd).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论