siszine
Новичок
Добрый день!
Есть сайт - на нем есть заливка картинок, при этом форматирование в большие и маленькие размеры фото.
Помогите сделать так, чтобы при добавлении картинки - автоматически в нижний правый угол ставился водяной знак.
В какое нужно место вставить и какой нужный код для наложения водяного знака
Есть сайт - на нем есть заливка картинок, при этом форматирование в большие и маленькие размеры фото.
Помогите сделать так, чтобы при добавлении картинки - автоматически в нижний правый угол ставился водяной знак.
В какое нужно место вставить и какой нужный код для наложения водяного знака
PHP:
<?php
/**
* Библиотека функций для работы с изображениями
*
* @author Smily
* @package libs
*/
/**
* Функция для изменения размеров изображения.
* Получает массив параметоров для изменения изображения следующего вида:
* array(
* 'file' => '', полный либо относительный путь к исходному файлу изображения
* 'width' => 0, ширина генерируемого изображения
* 'height' => 0, высота генерируемого изображения
* )
*
* @param unknown_type $resizeParams
* @return unknown
*/
function img_imageResize($imageFile, $width, $height = 0, $clipping = false, $cornerRadius = 0) {
$isSquare = false; //признак создания квадратного изображения
$resizeVars = array( 'resizeOn' => FALSE );
//если файл существует и заданы размеры преобразования
if ( is_file($imageFile) && (($width > 0) || ($height > 0)) ) {
$imageStatus = getimagesize($imageFile);
//если файл является корректным изображением типа GIF, JPEG или PNG
if ( !is_null($imageStatus) && ($imageStatus[2] > 0) && ($imageStatus[2] < 4) ) {
$imageWidth = $imageStatus[0];
$imageHeight = $imageStatus[1];
$deltaW = 0;
$deltaH = 0;
if ($height == 0) {
//делаем все изображения одной ширины
$height = floor( ($width * $imageHeight) / $imageWidth );
$isSquare = true;
} elseif ($width == 0) {
//делаем все изображения одной высоты
$width = floor( ($height * $imageWidth) / $imageHeight);
$isSquare = true;
} else {
//если задана высота и ширина и не задан клиппинг, уменьшаем изображение по большей стороне
if (!$clipping) {
if ($imageWidth > $imageHeight) {
$height = floor( ($width * $imageHeight) / $imageWidth );
} else {
$width = floor( ($height * $imageWidth) / $imageHeight);
}
}
}
//если задан клиппинг, делаем изображение квадратным по меньшей стороне
//if ($clipping) {
// if ($isSquare) {
// if ($width < $height) {
// $height = $width;
// $deltaH = floor(($imageHeight - $imageWidth) / 2);
// $imageHeight = $imageWidth;
// } else {
// $width = $height;
// $deltaW = floor(($imageWidth - $imageHeight) / 2);
// $imageWidth = $imageHeight;
// }
// } else {
//вычисляем высоту изображения
// $tempSize = floor( ($height * $imageWidth) / $width);
//если высота меньше исходной
// if ($tempSize < $imageHeight) {
// $deltaW = floor(($imageWidth - (($tempSize * $width) / $height)) / 2);
// $deltaH = floor(($imageHeight - $tempSize) / 2);
// $imageHeight = $tempSize;
// $imageWidth = floor(($tempSize * $width) / $height);
// } else {
//ширина
// $tempSize = floor( ($width * $imageHeight) / $height);
// $deltaW = floor(($imageWidth - $tempSize) / 2);
// $deltaH = floor(($imageHeight - (($tempSize * $height) / $width)) / 2);
// $imageWidth = $tempSize;
// $imageHeight = floor(($tempSize * $height) / $width);
// }
// }
//}
//создаем объект изображения из исходного файла
switch($imageStatus[2]) {
case 1:
$imageLink = imagecreatefromgif($imageFile);
break;
case 2:
$imageLink = imagecreatefromjpeg($imageFile);
break;
case 3:
$imageLink = imagecreatefrompng($imageFile);
break;
}
//создаем объект уменьшенного изображения
$resizeLink = imagecreatetruecolor($width, $height);
//отображаем исходное изображение в уменьшенное
imagecopyresampled($resizeLink, $imageLink, 0, 0, $deltaW, $deltaH, $width, $height, $imageWidth, $imageHeight);
//если задано скругление углов, выполняем его
if (intval($cornerRadius) > 0) {
/**
* Чем выше rate, тем лучше качество сглаживания и больше время обработки и
* потребление памяти.
*
* Оптимальный rate подбирается в зависимости от радиуса.
*/
$rate = 3;
imagealphablending($resizeLink, false);
imagesavealpha($resizeLink, true);
$rs_radius = $cornerRadius * $rate;
$rs_size = $rs_radius * 2;
$corner = imagecreatetruecolor($rs_size, $rs_size);
imagealphablending($corner, false);
$trans = imagecolorallocatealpha($corner, 255, 255, 255, 127);
imagefill($corner, 0, 0, $trans);
$positions = array(
array(0, 0, 0, 0),
array($rs_radius, 0, $width - $cornerRadius, 0),
array($rs_radius, $rs_radius, $width - $cornerRadius, $height - $cornerRadius),
array(0, $rs_radius, 0, $height - $cornerRadius),
);
foreach ($positions as $pos) {
imagecopyresampled($corner, $resizeLink, $pos[0], $pos[1], $pos[2], $pos[3], $rs_radius, $rs_radius, $cornerRadius, $cornerRadius);
}
$lx = $ly = 0;
$i = -$rs_radius;
$y2 = -$i;
$r_2 = $rs_radius * $rs_radius;
for (; $i <= $y2; $i++) {
$y = $i;
$x = sqrt($r_2 - $y * $y);
$y += $rs_radius;
$x += $rs_radius;
imageline($corner, $x, $y, $rs_size, $y, $trans);
imageline($corner, 0, $y, $rs_size - $x, $y, $trans);
$lx = $x;
$ly = $y;
}
foreach ($positions as $i => $pos) {
imagecopyresampled($resizeLink, $corner, $pos[2], $pos[3], $pos[0], $pos[1], $cornerRadius, $cornerRadius, $rs_radius, $rs_radius);
}
if (strtolower(fs_getExt($imageFile)) != 'png') {
unlink($imageFile);
$imageFile = str_replace('.'.fs_getExt($imageFile), '.png', $imageFile);
}
imagepng($resizeLink, $imageFile);
} else {
switch($imageStatus[2]) {
case 1:
imagegif($resizeLink, $imageFile);
break;
case 2:
imagejpeg($resizeLink, $imageFile, 100);
break;
case 3:
imagepng($resizeLink, $imageFile);
break;
}
}
imagedestroy($imageLink);
imagedestroy($resizeLink);
if(is_file($imageFile)) {
$resizeVars = array(
'resizeOn' => TRUE,
'resizeFile' => $imageFile,
'resizeWidth' => $width,
'resizeHeight' => $height,
'resizeFileSize' => filesize($imageFile)
);
}
}
}
return $resizeVars;
}
function img_imageType($imageFile) {
$imageStatus = @getimagesize($imageFile);
return (is_null($imageStatus)) ? false: $imageStatus[2];
}
?>