Forum Webscript.Ru
Программирование => PHP => Тема начата: lbpf от 02 Марта 2006, 16:33:58
-
Есть файл с логотипом - logo.png (он прозрачный). Есть изображение на которое его надо наложить.
Перед наложением в зависимости от размеров изображения - изменяется размер логотипа.
Но "новый" - уменьшенный логотип теряет прозрачность.
Подскажите как это победить :)
add_copyright ("image.jpg", "logo.png");
function add_copyright ($image, $copy)
{
$file_img = imagecreatefromjpeg($image);
$file_logo= imagecreatefrompng($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_logo, 0, 0, 0, 0, $x, $y, $cwidth, $cheight);
$src_x = $fwidth - ($x + 10);
$src_y = $fheight/2-$y;
ImageAlphaBlending($file_img, true);
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);
}
-
lbpf
Включи ImageAlphaBlending для $new_logo.
http://php.rinet.ru/manual/ru/function.imagealphablending.php
- почитай комментарии, есть примеры и solutions
-
Порылся я в инете и сделал такой способ наложения прозрачного копирайта 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_logo= imagecreatefrompng($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_logo, 0, 0, 0, 0, $x, $y, $cwidth, $cheight);
//координаты куда лепить копирайт на изображение
//в данном случае посередине (почти)
$src_x = $fwidth/2 - $x/2;
$src_y = $fheight/2 - $y/2-20;
ImageAlphaBlending($file_img, true);
ImageCopy($file_img,$new_logo,$src_x,$src_y,0,0,$x,$y);
imagejpeg($file_img, $new, 80);
imagedestroy($file_img);
imagedestroy($file_logo);
imagedestroy($new_logo);
}