Водяной знак на PHP
Встала недавно у меня задача написания скрипта, который накладывает водный знак на картинку. Держите код:
// Возвращает данные об изображении
function image_get_info($file = NULL){
if(!is_file($file)) return false;
if(!$data = getimagesize($file) or !$filesize = filesize($file)) return false;
$extensions = array(1 => "gif", 2 => "jpeg", 3 => "png", 4 => "swf", 5 => "psd", 6 => "bmp", 7 => "tiff", 8 => "tiff", 9 => "jpc", 10 => "jp2", 11 => "jpx", 12 => "jb2", 13 => "swc", 14 => "iff", 15 => "wbmp", 16 => "xbmp");
return array("width" => $data[0], "height" => $data[1], "extension" => $extensions[$data[2]], "size" => $filesize, "mime" => $data["mime"]);
}
function watermark($img_file){
$wm_file="../images/watermark.png";
$width="400";
$height="100";
$o=10;
if(!$source_im_info = image_get_info($img_file)) return false;
if(in_array($source_im_info["extension"], array("gif", "jpeg", "png"))){
$x=$source_im_info["width"]-$width-$o;
$y=$source_im_info["height"]-$height-$o;
$img_open_func = "imagecreatefrom".$source_im_info["extension"];
$source_im = $img_open_func($img_file);
$watermark_im = imagecreatefrompng($wm_file);
$result_im = imagecreatetruecolor($source_im_info["width"], $source_im_info["height"]);
if(!@imagecopyresampled($result_im, $source_im, 0, 0, 0, 0, $source_im_info["width"], $source_im_info["height"], $source_im_info["width"], $source_im_info["height"])) return false;
if(!@imagecopyresampled($result_im, $watermark_im, $x, $y, 0, 0, $width, $height, $width, $height)) return false;
//if(!imagejpeg($result_im, $img_file, 100)) return false;
$img_close_func = "image".$source_im_info["extension"];
if(!$img_close_func($result_im, $img_file, 100)) return false;
imagedestroy($source_im);
imagedestroy($watermark_im);
imagedestroy($result_im);
return true;
}
}
Запускается так:
watermark($img_file);
Я собой доволен =) Работает как надо. И в мой движок отлично встроилось. Постовой на сегодня: Профессиональная разработка сайтов Армавир