Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как сохранить качество изображения при загрузке на сервер

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ADIOS
Отправлено: 12 Августа, 2010 - 09:02:05
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


Помог: 2 раз(а)




есть такой скрипт.
PHP:
скопировать код в буфер обмена
  1. $w = 70;  // квадратная 90x90. Можно поставить и другой размер.
  2.  
  3. // создаём исходное изображение на основе
  4. // исходного файла и определяем его размеры
  5. $w_src = imagesx($im); //вычисляем ширину
  6. $h_src = imagesy($im); //вычисляем высоту изображения
  7.  
  8.          // создаём пустую квадратную картинку
  9.          // важно именно truecolor!, иначе будем иметь 8-битный результат
  10.          $dest = imagecreatetruecolor($w,$w);
  11.  
  12.          // вырезаем квадратную серединку по x, если фото горизонтальное
  13.          if ($w_src>$h_src)
  14.          imagecopyresampled($dest, $im, 0, 0,
  15.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
  16.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
  17.  
  18.          // вырезаем квадратную верхушку по y,
  19.          // если фото вертикальное (хотя можно тоже серединку)
  20.          if ($w_src<$h_src)
  21.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
  22.                           min($w_src,$h_src), min($w_src,$h_src));
  23.  
  24.          // квадратная картинка масштабируется без вырезок
  25.          if ($w_src==$h_src)
  26.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
  27.                  
  28.  
  29. $date=time(); //вычисляем время в настоящий момент.
  30. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у изображений не было одинаковых имен.


скрипт работает, но качество картинки сильно портится.
Может подскажите что нибудь чтоб картинка не теряло качество...


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Uchkuma
Отправлено: 12 Августа, 2010 - 09:35:46
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




В Вашем листинге есть ссылка на описание функции imagejpeg.
 
 Top
JustUserR
Отправлено: 13 Августа, 2010 - 01:08:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ADIOS пишет:
Создаём пустую квадратную картинку важно именно truecolor!, иначе будем иметь 8-битный результат $dest = imagecreatetruecolor($w,$w)
Качество генерируемого изображения зависит от выполняющихся алгоритмов автоматического преобразования при выполнении resample-инга - и его результат в свою очередь зависит не только от глубины цветности в исходном и конвертируемом изображении но и конкретной структурой его представления По этой причине набольше потери качестве происходят именно при конвертиронии графических форматов - и для предотвращения этого эффекта можно создавать целевое изображение в точности таком же формате -информацию о котором можно получить с помощью соответствующих функций


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB