119 lines
5.3 KiB
PHP
Executable File
119 lines
5.3 KiB
PHP
Executable File
<?php
|
||
/* Генератор ватермарка для сайта галереи */
|
||
|
||
function watter_mark($image2, $watermark2){
|
||
|
||
#header('content-type: image/jpeg');
|
||
// получаем имя изображения через GET
|
||
//$image = $_GET['image'];
|
||
// создаём водяной знак
|
||
$watermark = imagecreatefrompng($watermark2);
|
||
// получаем значения высоты и ширины водяного знака
|
||
$watermark_width = imagesx($watermark);
|
||
$watermark_height = imagesy($watermark);
|
||
// создаём jpg из оригинального изображения
|
||
//$image_path = '/path/to/image/folder/' . $image;
|
||
$image = imagecreatefromjpeg($image2);
|
||
//если что-то пойдёт не так
|
||
if ($image === false) {
|
||
return false;
|
||
}
|
||
$size = getimagesize($image_path);
|
||
// помещаем водяной знак на изображение
|
||
$dest_x = $size[0] - $watermark_width - 5;
|
||
$dest_y = $size[1] - $watermark_height - 5;
|
||
imagealphablending($image, true);
|
||
imagealphablending($watermark, true);
|
||
// создаём новое изображение
|
||
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
|
||
imagejpeg($image, $image2);
|
||
// освобождаем память
|
||
imagedestroy($image);
|
||
imagedestroy($watermark);
|
||
}
|
||
function add_watermark($img, $text, $font, $r = 128, $g = 128, $b = 128, $alpha = 100)
|
||
{
|
||
//получаем ширину и высоту исходного изображения
|
||
$width = imagesx($img);
|
||
$height = imagesy($img);
|
||
//угол поворота текста
|
||
$angle = -rad2deg(atan2((-$height),($width)));
|
||
|
||
//добавляем пробелы к строке
|
||
$text = " ".$text." ";
|
||
|
||
$c = imagecolorallocatealpha($img, $r, $g, $b, $alpha);
|
||
$size = (($width+$height)/2)*2/strlen($text);
|
||
$box = imagettfbbox ( $size, $angle, $font, $text );
|
||
$x = $width/2 - abs($box[4] - $box[0])/2;
|
||
$y = $height/2 + abs($box[5] - $box[1])/2;
|
||
|
||
//записываем строку на изображение
|
||
imagettftext($img,$size ,$angle, $x, $y, $c, $font, $text);
|
||
return $img;
|
||
}
|
||
/**
|
||
* Наложение водяного знака в виде изображения
|
||
* @param $oldimage_name - исходное изображение
|
||
* @param $new_image_name - выходное изображение
|
||
* @return Boolean
|
||
*/
|
||
function watermark_image($oldimage_name, $new_image_name, $w, $h){
|
||
// получаем имя изображения, используемого в качестве водяного знака
|
||
#global $image_path;
|
||
$image_path = MYDIR . '/img/w.png';
|
||
// получаем размеры исходного изображения
|
||
list($owidth,$oheight) = getimagesize($oldimage_name);
|
||
// задаем размеры для выходного изображения
|
||
$width = $w;
|
||
$height = $h;
|
||
// создаем выходное изображение размерами, указанными выше
|
||
$im = imagecreatetruecolor($width, $height);
|
||
$img_src = imagecreatefromjpeg($oldimage_name);
|
||
// наложение на выходное изображение, исходного
|
||
imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight);
|
||
$watermark = imagecreatefrompng($image_path);
|
||
// получаем размеры водяного знака
|
||
list($w_width, $w_height) = getimagesize($image_path);
|
||
// определяем позицию расположения водяного знака
|
||
$pos_x = $width - $w_width;
|
||
$pos_y = $height - $w_height;
|
||
// накладываем водяной знак
|
||
imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height);
|
||
// сохраняем выходное изображение, уже с водяным знаком в формате jpg и качеством 100
|
||
imagejpeg($im, $new_image_name, 100);
|
||
// уничтожаем изображения
|
||
imagedestroy($im);
|
||
#unlink($oldimage_name);
|
||
return true;
|
||
}
|
||
/*
|
||
#header('content-type: image/jpeg');
|
||
// получаем имя изображения через GET
|
||
$image = $_GET['image'];
|
||
// создаём водяной знак
|
||
$watermark = imagecreatefrompng('/w.png');
|
||
// получаем значения высоты и ширины водяного знака
|
||
$watermark_width = imagesx($watermark);
|
||
$watermark_height = imagesy($watermark);
|
||
// создаём jpg из оригинального изображения
|
||
$image_path = '/' . $image;
|
||
$image = imagecreatefromjpeg($image_path);
|
||
//если что-то пойдёт не так
|
||
if ($image === false) {
|
||
return false;
|
||
}
|
||
$size = getimagesize($image_path);
|
||
// помещаем водяной знак на изображение
|
||
$dest_x = $size[0] - $watermark_width - 5;
|
||
$dest_y = $size[1] - $watermark_height - 5;
|
||
imagealphablending($image, true);
|
||
imagealphablending($watermark, true);
|
||
// создаём новое изображение
|
||
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
|
||
imagejpeg($image);
|
||
// освобождаем память
|
||
imagedestroy($image);
|
||
imagedestroy($watermark);
|
||
*/
|
||
?>
|