Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Создание картинки с неровными краями и прозрачным фоном
Понадобилось сделать картинку с неровными краями, причем картинка должна быть именно прозрачной, вариант сделать белый фон не прокатывает. Самым логичным было бы использовать наложение маски как это можно сделать скажем во флеше... но...
Почему то в GD нет функций для работы с масками. Пришлось изобретать самим, и вот что получилось:
Так выглядит код маскирования:
$image = imagecreatefromgif('image.gif');
$mask = imagecreatefromgif('mask.gif');
$dest = imagecreatetruecolor(imagesx($image),imagesy($image));
imagemask($dest,$image,$mask);
header('Content-type: image/jpeg');
imagepng($dest);
Код самой функции маскирования:
function imagemask($dest,$image,$mask){
$width = imagesx($image);
$height = imagesy($image);
$tc = imagecolorallocate($dest,0,0,0);
imagecolortransparent($dest,$tc);
for($i=0;$i<$width;$i++){
for($j=0;$j<$height;$j++){
$c = imagecolorat($image,$i,$j);
$color = imagecolorsforindex($image,$c);
$c = imagecolorat($mask,$i,$j);
$mcolor = imagecolorsforindex($mask,$c);
if (!($mcolor['red']==255 && $mcolor['green']==255 && $mcolor['blue']==255)){
$c = imagecolorallocate($dest,$color['red'],$color['green'],$color['blue']);
imagesetpixel($dest,$i,$j,$c);
}
}
}
}
Источник: http://www.maxistar.ru/blog/key/PHP/.
.
Прокомментировать/Отблагодарить