2015-12-01 66 views
0

我使用PHPImageWorkshop library来叠加透明图像(这是它应该擅长的事情之一,所以我必须做错了)!PHPImageWorkshop library:分层透明PNG图像

当我刚刚指定基层(透明的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×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"> 

现在我的背景图案不再可见,并且在透明图层上有一个小的灰色正方形,这是我的背景图像的大小。

我在做什么错?

感谢您看...

+2

是否可以得到您的图片? – Sybio

+0

谢谢@Sybio,你在正确的轨道上,我的底层图像被保存在错误的颜色模式。 –

回答

0

I 24小时试图一切...这不是我的代码后想通了这一点,这是我用的是因为这是错我的背景层PNG图像。

它以前保存为索引颜色文件(而不是RGB),然后重新保存为PNG,因此它的颜色模式不正确。

我最终尝试使用股票PNG图像相同的代码,并且一切正常!