|
|
|
| Доброго времени суток
Возник такой вопрос.Наверняка кто то делал эту вещь.
Мне необходиммо наложить полупрозрачное png изображение при загрузке, на изображения форматов gif,jpg,jpeg,png.
Тоесть я имею ввиду защиту от копирования.
Может есть у кого готовый вариант скрипта .. и кто то поделится? | |
|
|
|
|
|
|
|
|
для: m@rchello
(01.09.2008 в 19:36)
| | И я бы точно не стал лепить логотипы при каждой отдаче картинки скриптом, это будет создавать большую нагрузку на сервер. Лучше сделать скрипт, который будет разово ставить "клеймо" на все новые изображения и записывать уже гоовые варианты в папку в файловой системе. | |
|
|
|
|
|
|
|
для: DDK
(01.09.2008 в 22:46)
| | Впринципе это и имелось ввиду .... при "загрузке" недописал просто что "на сервер". | |
|
|
|
|
|
|
|
для: m@rchello
(02.09.2008 в 06:35)
| | Я пользуюсь такой фигней, если кто поправит буду благодарен!
определяються ограничения на размеры по ширине о высоте.
логотип сделан в png и размещается строго в нижнем правом углу.
<?php
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
$filename = $filename;
// Имя файла с уменьшенной копией.
$smallimage = $smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// Если размеры меньше, то масштабирования не нужно
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// накладываем прозрачный логотип функцией imagecopy()
$lg = imagecreatefrompng("water.png");//прозрачный логотип
$lg_w =100; //ставим ширину логотипа
$lg_h=100; //ставим высоту логотипа
// $dest_img - уменьшенная копия
// $lg - накладываем прозрачный логотип
// dst_x - координаты вставки по горизонтали:
// размер уменьшенного изображения по горизонтали($w) минус размер логотипа по горизонтали($lg_w) = правый нижний угол
$dst_x=($w)-($lg_w);
// dst_y - - координаты вставки по вертикали
$dst_y=($h)-($lg_h);
imagecopy($dest_img, $lg,$dst_x, $dst_y, 0, 0, $lg_w, $lg_h);
// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img, $smallimage);
else if ($size_img[2]==1) imagegif($dest_img, $smallimage);
else if ($size_img[2]==3) imagepng($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
imagedestroy($lg);
return true;
}
?>
|
это может быть отдельный файл, который подключается
сама "загрузка"
if (is_uploaded_file($_FILES['file']['tmp_name']))
{ //путь и имя файла для сохранения, процент уменьшения.
resizeimg($_FILES['file']['tmp_name'], $имя_файла".jpg", '250', '250');
//здесь же сохраняем загруженное исходное изображение
} else
{
echo "ошибка";//ошибка загрузки изображения
}
|
| |
|
|
|
|
|
|
|
для: ronin
(02.09.2008 в 16:02)
| | зверство, я использую imageMagic - там это делается в две команды | |
|
|
|
|
|
|
|
для: Balamut182
(02.09.2008 в 17:04)
| | Ну да, а сам imageMagic это делает тоже двумя командами? | |
|
|
|