core/api/php/wm.php

119 lines
5.3 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
*/
?>