Автор Тема: При использовании imagecopyresized теряется прозрачность файла png  (Прочитано 3800 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lbpf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Есть файл с логотипом - logo.png (он прозрачный). Есть изображение на которое его надо наложить.
Перед наложением в зависимости от размеров изображения - изменяется размер логотипа.
Но "новый" -  уменьшенный логотип теряет прозрачность.

Подскажите как это победить :)

 
add_copyright 
("image.jpg""logo.png");


function 
add_copyright ($image$copy)
{
   
$file_img imagecreatefromjpeg($image);
   
$file_logoimagecreatefrompng($copy);
   
$fwidth  imagesx($file_img);
   
$fheight imagesy($file_img);
   
$cwidth  imagesx($file_logo);
   
$cheight imagesy($file_logo);
         
$x 0.5*$fwidth;
         
$y $x*$cheight/$cwidth;


   
$new_logo imagecreate($x$y);
   
imagecopyresized($new_logo$file_logo0000$x$y$cwidth$cheight);
   
$src_x $fwidth - ($x 10);
   
$src_y $fheight/2-$y;
   
ImageAlphaBlending($file_imgtrue);
   
ImageCopy($file_img,$new_logo,$src_x,$src_y,0,0,$x,$y);
   
imagejpeg($file_img"new.jpg"80);
   
imagedestroy($file_img);
   
imagedestroy($file_logo);
   
imagedestroy($new_logo);

}

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
lbpf
Включи ImageAlphaBlending для $new_logo.

http://php.rinet.ru/manual/ru/function.imagealphablending.php
- почитай комментарии, есть примеры и solutions
LJ: Backslashed life (rss)

Оффлайн lbpf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Порылся я в инете и сделал такой способ наложения прозрачного копирайта PNG на JPEG изображение, с изменением размера копирайта в зависимости от размера JPEG изображения.


$image
="image.jpg"//файл на который накладываем копирайт
$copy="copy.png";  //копирайт PNG-24bit with Transparent
$new="new.jpg";    //файл изображения с копирайтом

add_copyright ($image$copy$new);

function 
add_copyright ($image$copy$new)

   
$file_img imagecreatefromjpeg($image);
   
$file_logoimagecreatefrompng($copy);
   
$colorTransparent imagecolortransparent($file_logo);

   
$fwidth  imagesx($file_img);
   
$fheight imagesy($file_img);
   
$cwidth  imagesx($file_logo);
   
$cheight imagesy($file_logo);
//вычисляем размеры нового копирайта в зависимости
//от размеров $image
         
$x 0.8*$fwidth;
         
$y $x*$cheight/$cwidth;

   
$new_logo imagecreatetruecolor($x$y);

   
imagefill($new_logo,0,0,$colorTransparent);
   
imagecolortransparent($new_logo$colorTransparent);
   
imagecopyresized($new_logo$file_logo0000$x$y$cwidth$cheight);
//координаты куда лепить копирайт на изображение
//в данном случае посередине (почти)
   
$src_x $fwidth/$x/2;
   
$src_y $fheight/$y/2-20;      
   
ImageAlphaBlending($file_imgtrue);
   
ImageCopy($file_img,$new_logo,$src_x,$src_y,0,0,$x,$y);
   
imagejpeg($file_img$new80);
   
imagedestroy($file_img);
   
imagedestroy($file_logo);
   
imagedestroy($new_logo);

}

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28