понедельник, 3 марта 2008 г.

PHP. Лого на загружаемое изображение.

Вот пример функции, которая вставляет лого (png с прозрачностью) в изображение. Внимание! Скрипт должен запускаться с правами на chmod и удаление файлов.


// вставляет лого в пикчу
//$logo_img - полный путь до лого в формате png с прозрачностью
//$img - полный путь к обрабатываемому изображению
function SetLogo($logo_img ,$img)
{

$info = @getimagesize($img);

//проверка расширения и доступности файла
if (!$info)
return -1;

switch( $info[2])
{
case "2": //jpg
$srcImage = @ImageCreateFromJPEG($img);
break;

case "1"://gif
$srcImage = ImageCreateFromGIF($img);
break;

case "3"://png
$srcImage = ImageCreateFromPNG($img);
break;

default:
return -1;
break;
}

$logoImage = ImageCreateFromPNG($logo_img);
if (!$logoImage)
return -1;

$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);

$logoWidth = ImageSX($logoImage);
$logoHeight = ImageSY($logoImage);

imageAlphaBlending($logoImage, false);
imageSaveAlpha($logoImage, true);

$trcolor = ImageColorAllocate($logoImage, 255, 255, 255);
ImageColorTransparent($logoImage , $trcolor);

$logo_inserted=false;

if (($srcWidth>$logoWidth) && ($srcHeight>$logoHeight))
$logo_inserted=imagecopy($srcImage, $logoImage, $srcWidth - $logoWidth, $srcHeight - $logoHeight, 0, 0, $logoWidth, $logoHeight);

if ($logo_inserted)
{

@chmod($img, 0777);
if (@unlink($img))
{

switch( $info[2])
{
case "2"://jpg
ImageJPEG($srcImage, $img, 100);
break;

case "1"://gif
ImageGIF($srcImage, $img);
break;

case "3"://png
ImagePNG($srcImage, $img);
break;

}
}
}

@ImageDestroy($srcImage);
}
?>

Комментариев нет: