Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Альфа png на альфа png

Сообщения:  [1-2] 

 
 автор: Авилкин   (04.07.2006 в 13:41)   письмо автору
 
   для: Авилкин   (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_pTRUE);
        
imagecopyresampled($image_p$image0000$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_y0010038);
    }else{
        
imagesavealpha($image_pTRUE);
        
imagealphablending($image_pFALSE);
        
imagecopyresampled($image_p$image0000$new_width$new_height$width$height);
    }
    
header("Content-type: image/png");
    
imagepng($image_p);
?>


Может быть это выглядит криво, но это работает

   
 
 автор: Авилкин   (04.07.2006 в 12:41)   письмо автору
 
 

Сразу оговорюсь: в 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(). Рузультат еще хуже.

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования