Использование прозрачного PNG в качестве маски клипа - PullRequest
9 голосов
/ 16 ноября 2009

Можно ли взять это изображение:

image1

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

mask

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

image2

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

Ответы [ 3 ]

12 голосов
/ 28 февраля 2010

Использование версий 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;
1 голос
/ 16 ноября 2009

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

0 голосов
/ 05 июня 2012

Отличная работа с (ImageMagick) НЕ GD .. Я вижу теги этого вопроса GD !!

Вот версия GD по этой ссылке: PHP GD Использование одного изображения для маскировки другого изображения, включая прозрачность

...