|
| |
|
|
| |
для: Авилкин
(04.07.2006 в 12:41)
| | | Все. Всем спасибо за внимание. Проблему решил самостоятельно. Не могу рассказать про ОБЩЕЕ решение проблемы, но в моем частном случае необходимо было изменить размер первой картинки с альфа-каналом, и поместить поверх нее вторую картинку с альфа-каналом. В результате мой код выглядит так:
<?php
list($width, $height)=getimagesize($filename);
$image = imagecreatefrompng($filename);
$image_p = imagecreatetruecolor($new_width, $new_height);
$stamp = imagecreatefrompng($stampFile);
//$image - первая альфа-png картинка, $image_p - пустая картинка с новыми размерами, $stamp - картинка, которую надо наложить на первую.
if($doStamp==1){
//если необходимо накладывать вторую каритнку ($doStamp==1):
imagefill($image_p,1,1,imagecolorallocatealpha($image_p,0,0,0,127));
imagesavealpha($image_p, TRUE);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$dst_x=$new_width-100;
$dst_y=$new_height-38;
//$dst_x и $dst_y обусловлены размерами $stamp (100х30), в моем случае они постоянны.
imagecopy ($image_p, $stamp, $dst_x, $dst_y, 0, 0, 100, 38);
}else{
imagesavealpha($image_p, TRUE);
imagealphablending($image_p, FALSE);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
}
header("Content-type: image/png");
imagepng($image_p);
?>
|
Может быть это выглядит криво, но это работает | |
| |
|
|
| |
|
|
| | Сразу оговорюсь: в php я практически ничего не понимаю, но волею случая появилась необходимоть его использовать.
Итак задача: необходимо на png-картинку с альфа-каналом наложить другую png-картинку с альфа-каналом. Очень хотелось бы знать, как это сделать. imagecopy(), судя по всему, просто накладывает альфу с верхней картинки на нижнюю и, соответственно, ни черта не получается.
На данный момент у меня НЕ РАБОТАЕТ:
$image = imagecreatefrompng($filename);
$image2 = imagecreatefrompng($filename2);
imagesavealpha($image, TRUE);
imagealphablending($image, FALSE);
imagecopy ($image, $image2, 0, 0, 0, 0, 100, 38);
header("Content-type: image/png");
imagepng($image);
|
В результате работы этого кода на результирующей картинке скрыта вся область $image, которая попадает под альфу $image2. Помимо imagecopy() пытался пробовать imagecopymerge() и imagecopymergegray(). Рузультат еще хуже. | |
| |
|
| |
|