Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маштабирование картинки 
:(
    Опции темы
Elfet
Дата 17.2.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Как можно быстро отмаштабировать картинку до нужных размеров? Насколько это быстро получается?
Можно ли маштабировать изображения для каждого показа страницы отдельно если картинок менее 20? или всё же придётся создовать отмаштабированную картинку для каждого из рисунков?
smile


--------------------
PM MAIL WWW Skype   Вверх
Irokez
Дата 17.2.2005, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: нет
Всего: 53



PM   Вверх
rMaveric
Дата 17.2.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



2 Elfet
Как вариант и правда почитай доку, но я долгое время работаю в сфере где приходиться мучаться с постоянным масштабированием графики... Мй вердикт таков.

Все зависит от трафика на твем сервере... Если траф большой, то никаких динамических картинок он просто не выдержит. Я сейчас работаю по следующей схеме.

1. Заливаю полное изоброажение без сжатия (или с минимальным) При первой необходимости динамически создаешь его копию в нужных размерах. И сохранаешь где нить об этом данные. Как только понадобилось отдал уже готовую картинку, понадобилось в новом ракурсе пережал и сохранил... Место тратится хорошо, но до определенного момента. И если учесть цену всех остальных составляющих хоста, то понятно что выигруешь очень неплохо.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Elfet
Дата 18.2.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Я всё же не понял почему маштабмровать картинку на сервере каждый раз плохо? разве это маштабирование так сильно нагружает систему?


--------------------
PM MAIL WWW Skype   Вверх
Mal Hack
Дата 18.2.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Elfet это замедляет работу скрипта, т.к.
идет постоянное обращение к файловой системе, плюс само масштабирование тоже времени просит.
PM ICQ   Вверх
rMaveric
Дата 18.2.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: нет
Всего: 6



2 Elfet
Можно и каждый раз масштабировать... Если конечно к тебе на сайт заходят 2 раза в месяц... И то из этих двух щасливчиком одним обычно оказываешься ты.... На практике же, когда работает серьезный проект у тебя сервер умирает только от одних запросов и с трудом успевает отдавать ХТМЛки... и тогда о динамической генерации картинок лучше не думать....

З.Ы.
Генерация картинок и выдача потом готовых экземпларов - это просто метод оптимизации. И не более.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
HalkaR
Дата 18.2.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Если не обязтельно сохранять, то можно отмасштабировать банальным ява-скриптом.
PM MAIL   Вверх
InfMag
Дата 18.2.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: -1
Всего: 4



HalkaR
Ты че? Через JS что-ли? Сума сошел? А какой тогда смысл? Трафика будет в два раза больше, будет загружаться вся картинка в полном объеме. И причем будет все смазано, да и юзер скорость не одобрит...
PM   Вверх
HalkaR
Дата 18.2.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



InfMag, я ж сказал, что если картинку не надо сохранять. Например если картинка используется один раз и она не на много больше необходимой, а смазанно не будет.
PM MAIL   Вверх
InfMag
Дата 18.2.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: -1
Всего: 4



HalkaR
Я имею виду, что будут косяки... Покрайней мерее в каком-то браузере точно будут. И картинки должны постоянно юзаться и не по одной. Уже упомянулось.
PM   Вверх
Elfet
Дата 20.2.2005, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Угу, хорошо, а можно саму функцию маштабирования? плиз! smile


--------------------
PM MAIL WWW Skype   Вверх
Mal Hack
Дата 20.2.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



PM ICQ   Вверх
Elfet
Дата 21.2.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



угу, спасибо smile а вот если ещё пнг или гиф?


--------------------
PM MAIL WWW Skype   Вверх
Mal Hack
Дата 21.2.2005, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Думаю, заменить imagejpeg() на imagegif или imagepng будет достаточно... Ну соответственно imagecreatefromjpeg тоже...
Вот с разными форматами не знаю как будет работать... Надо тестить.. Щас к сожалени на это времени нет. Если очень надо могу в среду попробовать.

PM ICQ   Вверх
Elfet
Дата 23.2.2005, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Mal Hack, я щас сам попробую smile если не получится тогда попрошу помощи


--------------------
PM MAIL WWW Skype   Вверх
yUAC
Дата 23.2.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 9.6.2004

Репутация: нет
Всего: 3



На всякий случай, если Вы еще не поняли: масштабирование картинок ОЧЕНЬ СЕРЬЕЗНО НАГРУЖАЕТ СИСТЕМУ, я не видел еще ни одной библиотеки для ПХП по работе с графикой, которая бы использовала видеокарту для получения уменьшенных копий изображения (а это могло бы очень серьезно уменьшить нагрузку, создаваемую на сервер, хотя качество при этом бы пострадало). Сохранять уменьшенные копии нужно только в JPEG, т.к. другие форматы типа PNG или GIF сжимают без потерь, и зачастую уменьшенная копия картинки весит больше, чем исходная! Это объясняется тем, что при масштабировании очень серьезно изменяется структура картинки, зачастую нарушается и её геометрия, соответственно при работе с сжатием без потерь могут возникнуть очень серьезные проблемы.

P.S. В GD2 есть еще одна функция для уменьшения картинки - imagecopyresampled. С её помощью получаются тумбнейлзы намного лучшего качества (идет «умное» сжатие изображения, намного более приятное глазу), но при этом нагрузка возрастает еще в несколько раз. Может быть лет через 10 разницы между этими функциями не будет, но везде, где только это возможно я советую использовать imagecopyresized, т.к. нагрузка на сервер серьезно уменьшается.
PM MAIL   Вверх
aleksey_from_kg
Дата 27.12.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.10.2006

Репутация: нет
Всего: нет



Вопрос в тему. 
У меня есть код масштабирования картинки. На локалке он нормально работает, а вот на сервере что-то работать не хочет.

Вот код
Код

<?php
// Функция автоматического масштабирования изображения
// $filename — имя исходного изображения
// $smallimage — имя файла уменьшенной копии
// $w и $h — максимальные размеры изображения по ширине и высоте
function resizeimg($filename, $smallimage, $w, $h)
{
// Определение коэффициента сжатия уменьшенной копии изображения
$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);
// Вызов функции создания изображения
// в зависимости от расширения исходного файла
if ($size_img[2]==2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2]==l) $src_img = imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img = imagecreatefrompng($filename);
// Масштабирование изображения
if (!imagecopyresampled($dest_img, $src_img,
0, 0, 0, 0, $w, $h,
$size_img[0], $size_img[1])) return false;
//В зависимости от расширения имени файла с уменьшенной копией,
// переданного в параметрах функции,
// вызываем функцию сохранения уменьшенной копии в файл
$path_parts=pathinfo($smallimage);
if ($path_parts ["extension"] == "jpg")
imagejpeg($dest_img, $smallimage);
else if ($path_parts["extension"] == "gif")
imagegif($dest_img, $smallimage);
else if ($path_parts["extension"] == "png")
imagepng($dest_img, $sma11image);
// Очищение памяти от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
resizeimg("picture.jpg", "smoll_picture.jpg", 100, 100);
?>


В чем может быть проблема. и как ее можно решить?

PM MAIL   Вверх
Mal Hack
Дата 27.12.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



aleksey_from_kg
Модератор: один топик один вопрос. 
Два. Что выдает, ошибки, вывод которых надо включить...
PM ICQ   Вверх
aleksey_from_kg
Дата 28.12.2006, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.10.2006

Репутация: нет
Всего: нет



Mal Hack,  
Хорошо smile 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.