2015-12-01 70 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圖像相同的代碼,並且一切正常!