Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: работа с изображениями
 
 автор: m@rchello   (01.09.2008 в 19:36)   письмо автору
 
 

Доброго времени суток

Возник такой вопрос.Наверняка кто то делал эту вещь.

Мне необходиммо наложить полупрозрачное png изображение при загрузке, на изображения форматов gif,jpg,jpeg,png.

Тоесть я имею ввиду защиту от копирования.
Может есть у кого готовый вариант скрипта .. и кто то поделится?

  Ответить  
 
 автор: Valick   (01.09.2008 в 20:34)   письмо автору
 
   для: m@rchello   (01.09.2008 в 19:36)
 

Учитесь пользоватся поиском :)
http://softtime.ru/forum/srch.php?id_forum=1&name=imagecreate&numberthemes=30&srchwhere=2&id_forum=1&logic=0&send=%CD%E0%E9%F2%E8

  Ответить  
 
 автор: DDK   (01.09.2008 в 22:46)   письмо автору
 
   для: m@rchello   (01.09.2008 в 19:36)
 

И я бы точно не стал лепить логотипы при каждой отдаче картинки скриптом, это будет создавать большую нагрузку на сервер. Лучше сделать скрипт, который будет разово ставить "клеймо" на все новые изображения и записывать уже гоовые варианты в папку в файловой системе.

  Ответить  
 
 автор: m@rchello   (02.09.2008 в 06:35)   письмо автору
 
   для: DDK   (01.09.2008 в 22:46)
 

Впринципе это и имелось ввиду .... при "загрузке" недописал просто что "на сервер".

  Ответить  
 
 автор: ronin   (02.09.2008 в 16:02)   письмо автору
 
   для: 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_img255255255);
    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_img0000$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_y00$lg_w$lg_h);
    
// сохраняем уменьшенную копию в файл
    
if ($size_img[2]==2)  imagejpeg($dest_img$smallimage);
    else if (
$size_img[2]==1imagegif($dest_img$smallimage);
    else if (
$size_img[2]==3imagepng($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 "ошибка";//ошибка загрузки изображения
  }


  Ответить  
 
 автор: Balamut182   (02.09.2008 в 17:04)   письмо автору
 
   для: ronin   (02.09.2008 в 16:02)
 

зверство, я использую imageMagic - там это делается в две команды

  Ответить  
 
 автор: sim5   (02.09.2008 в 17:46)   письмо автору
 
   для: Balamut182   (02.09.2008 в 17:04)
 

Ну да, а сам imageMagic это делает тоже двумя командами?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования