2015-12-01 3 views
0

Я использую PHPImageWorkshop library для выравнивания прозрачных изображений (что является одной из вещей, которые, как предполагается, превосходят, поэтому я должен делать это неправильно)!PHPImageWorkshop библиотека: слоистые прозрачные изображения 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

Я понял это после 24 часов, пытаясь все ... это был не мой код, это изображение PNG Я использую для моего фонового слоя, который был виноват.

Он был сохранен ранее как индексированный цветной файл (вместо RGB), а затем повторно сохранен как PNG, поэтому он находился в неправильном цветовом режиме.

В конечном итоге я попробовал использовать тот же код с использованием PNG-изображения, и все работало нормально!

Смежные вопросы