PHP: Как создать тень для изображения с помощью альфа-маски

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

http://www.brunet.fr/alpha.jpg

Я полагаю, мне нужно было бы:

  1. получить альфа-маску из первого изображения
  2. залейте его соответствующим цветом и размойте
  3. создать новое пустое белое изображение
  4. скомпонуйте его сначала с тенью, а первое изображение

Но я нигде не могу найти каких-то советов, особенно по первой части.

Изменить: я нашел начало ответа здесь Я попробую и дам вам знать.

Спасибо


person Matthieu    schedule 28.09.2012    source источник
comment
Предоставьте файл png сначала, пожалуйста.   -  person Robert Guo    schedule 28.09.2012
comment
пример изображения   -  person Matthieu    schedule 28.09.2012


Ответы (1)


Сначала вам нужно установить расширение php с именем: Imagick

<?php 
/* Read the image into the object */ 
$im = new Imagick( 'a.png' ); 
$im->setImageFormat("png"); 

/* Make the image a little smaller, maintain aspect ratio */ 
$im->thumbnailImage( 200, null ); 

/* Clone the current object */ 
$shadow = $im->clone(); 

/* Set image background color to black 
        (this is the color of the shadow) */ 
$shadow->setImageBackgroundColor( new ImagickPixel( 'black' ) ); 

/* Create the shadow */ 
$shadow->shadowImage( 80, 3, 5, 5 ); 

/* Imagick::shadowImage only creates the shadow. 
        That is why the original image is composited over it */ 
$shadow->compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 ); 

/* Display the image */ 
header( "Content-Type: image/png" ); 
echo $shadow; 
person Robert Guo    schedule 28.09.2012
comment
это работает!! Благодарность ! Я все еще пытаюсь понять, как это работает, но это работает - person Matthieu; 28.09.2012
comment
На самом деле опция тени Image Magick использует альфа-слой. Вот так просто! - person Matthieu; 28.09.2012
comment
@Matthieu, лол, ты можешь просмотреть руководство, чтобы узнать, как это работает. - person Robert Guo; 28.09.2012