PHPImageWorkshop库:分层透明的PNG图像

时间:2015-12-01 14:11:38

标签: php png transparent layer

我正在使用PHPImageWorkshop library来叠加透明图像(这是它应该擅长的事情之一,所以我一定做错了)!

当我只指定基础层(透明的PNG徽标)时,一切都按预期工作,请参阅代码:

<?php
use PHPImageWorkshop\ImageWorkshop;
require_once('lib/PHPImageWorkshop/ImageWorkshop.php');

$base_layer = ImageWorkshop::initFromPath( __DIR__.'/img/bg.png' );

$dirPath = dirname(__FILE__).'/output/';
$filename = "file.png";
$base_layer->save( $dirPath, $filename, false, null, 95 );
?>
<img src="/output/file.png">

...结果是一个透明的PNG,带有我指定的背景图像,正如预期的那样(除了复制图像,我真的没有做任何事情。)

当我尝试在背景图层上添加较小的图像而不是覆盖它时会出现问题,它会覆盖我的背景图像,完全替换它?

在这里,我尝试创建一个小的灰色方块(100 x 100),并将其放在我的背景徽标中间(使用我现有的代码):

<?php
use PHPImageWorkshop\ImageWorkshop;
require_once('lib/PHPImageWorkshop/ImageWorkshop.php');

$base_layer = ImageWorkshop::initFromPath( __DIR__.'/img/bg.png' );

// ADDED 2 LINES--------------------------------------------------
$layer_two  = ImageWorkshop::initVirginLayer( 100, 100, 'CCCCCC' );
$base_layer->addLayerOnTop( $layer_two, 0, 100, 'MT' );

$dirPath = dirname(__FILE__).'/output/';
$filename = "file.png";
$base_layer->save( $dirPath, $filename, false, null, 95 );
?>
<img src="/output/file.png">

现在我的背景徽标不再可见,我在透明图层上有一个小灰色方块,大小与我的背景图像相同。

我做错了什么,拜托?

感谢您的期待...

1 个答案:

答案 0 :(得分:0)

我在24小时后尝试了所有这一切......这不是我的代码,而是我用于背景图层的PNG图像有问题。

之前已将其保存为索引颜色文件(而不是RGB),然后重新保存为PNG,因此它处于错误的颜色模式。

我最终使用库存PNG图像尝试了相同的代码,一切正常!