2009-11-16 4 views
9

Можно ли принять этот образ:Использование прозрачного PNG в качестве маски клипа

image1 http://i34.tinypic.com/2d8neo0.png

И применять эту маску:

mask http://i35.tinypic.com/2091450.png

И превратить его в это:

image2 http://i37.tinypic.com/23m7apv.png

Использование GD или Imagick? Я знаю, что можно маскировать изображение с помощью фигур, но я не уверен, как это сделать с заранее созданным альфа-прозрачным изображением. : s

+0

Я просто сделал некоторые поиски и, видимо, я мог бы быть в состоянии использовать библиотеку WideImage (http://wideimage.sourceforge.net/), чтобы сделать это. Но есть ли более простой способ, чем использовать полномасштабную библиотеку только для этой функции? – Jedi

+1

Спасибо за редактирование, Пол. – Jedi

+0

Мне тоже нужно это. – henrijs

ответ

1

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

+1

Нет, я не верю. Я не объединяю изображения, я использую одно изображение для маскировки существующего изображения. Результат изображения является альфа-прозрачным. – Jedi

+3

Обратить свою маску. Сделайте центр транс, а края поблекнут до белого. Затем обрезайте или масштабируйте изображение до размера маски. Это предполагает белый фон, конечно. Если белый не работает, делаете ли вы черно-белый? Если да, возьмите нечетный цвет (ярко-розовый или цветной зеленый, оба из которых могут работать, если у вас есть цвет). Создайте истинное цветное изображение и маску, чтобы цвет, а затем установите цвет палитры прозрачным. Итак, да, я думаю, это сработает, просто нужно попробовать его со всех сторон. – Cryophallion

12

Использование Imagick и ImageMagick версии> 6 (я не знаю, если он будет работать на старых версиях):

// Set image path 
$path = '/path/to/your/images/'; 

// Create new objects from png's 
$dude = new Imagick($path . 'dude.png'); 
$mask = new Imagick($path . 'dudemask.png'); 

// IMPORTANT! Must activate the opacity channel 
// See: http://www.php.net/manual/en/function.imagick-setimagematte.php 
$dude->setImageMatte(1); 

// Create composite of two images using DSTIN 
// See: http://www.imagemagick.org/Usage/compose/#dstin 
$dude->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0); 

// Write image to a file. 
$dude->writeImage($path . 'newimage.png'); 

// And/or output image directly to browser 
header("Content-Type: image/png"); 
echo $dude; 
+0

Спасибо! Я искал это! Прекрасно работает. – acme

+0

Я попробовал это, пошел с черным фоном на сероватый фон ... –

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