ресайз картинок

Фанат

oncle terrible
Команда форума
Кстати, я так и непонял чем тебе ImageCopyResized не понравился.
Я использую ImageCopyResampled
люди, объясните мне логику этого предложения?
сам я ее не догоняю, а товарища спрашивать уже боюсь.
Человек в итоге пишет в файл
Даааа?
И какое же имя у этого файла?
А на лету ресайз это конечно смертельный номер
Вот и объясни своему другу коммандо, чтобы он этого не делал
 

Zeratul

Guest
мда, действительно в файл не пишет. Не гуд.
 

Altex

Новичок
Автор оригинала: Фанат
Altex, упс, сорри, не заметил, что там нету гетимаджсайз вообще.
вот что значит инерция мышления!
Да я и не про это говорил, за что извиняться, правльно ты заметил про getimagesize, я просто добавил.

Чтобы остальные не запутались:
--- вот это ---
eregi(".(.*)$",$image,$regs);
$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);
--- заменить можно на это ---
$imgParams = getImageSize($image);
/*
$imgParams[0] - ширина
$imgParams[1] - высота
$imgParams[2] - тип файла (типа раширение)
$imgParams[3] - размер файла
*/
------------------
 

commando

Guest
Zeratul писал
ну а поподробнее - пример кода?
именно поэтому я выложил сюда готовую функцию. Я не писал, что она является абсолютным эталоном правильного программирования и что ее должны применять все. Это просто пример, который работает. На счет getImageSize полностью согласен, а чтобы писать в файл надо добавить всего пару строк. Опять таки, это пример функции ресайза (в данном случае - налету) а не готовый скрипт.
 

Фанат

oncle terrible
Команда форума
а можно поинтересоваться - для кого этот пример?
 

commando

Guest
Похоже Zeratul писал не про тот пример (виноват, был невнимательным), тем не менее, R00miss спросил "как это сделать?" (т.е. как ресайзить картинку), на что ему выдали различные ссылки. Я решил привести пример готового (пусть, не идеального) кода
 

SiMM

Новичок
Question, а что тебе мешает их закэшировать? Нагрузка будет гораздо меньше.
 

fixxxer

К.О.
Партнер клуба
ресайзить один раз и результат хранить на диске.
 

valyala

Новичок
А использовать данные, полученные выше, через getimagesize - некошерно?
Корректно. Фанат, ты напоминаешь мне ворчливую бабку, сидящую у подъезда и вечно всем недовольную. Знаешь поговорку про бревно в собственном глазу. Это про тебя. Только без обид :)
Отвечу вопросом на вопрос (антисемитов прошу не беспокоиться :) ) :
А разве некорректно использовать функции imagesx() и imagesy() для получения этих же данных?
А теперь вспоминаем, что функция getimagesize() заново открывает и анализирует файл, который уже был открыт до этого одной из функций ImageCreateFromX() Т.е. выполняет бесполезную работу, на которую тратится достаточно большое количество процессорного времени.

ImageCopyResized

Тебе не кажется, что при использовании этой функции качество немного страдает?
А мне кажется.
Когда кажется - креститься надо! :) Проверь качество полученной картинки при использовании следующего кода:
PHP:
$img_src = imagecreatefromjpeg('путь_к_картинке');
$img_dst = imagecreatetruecolor(ширина, высота);
imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, imagesx($img_dst), imagesy($img_dst), imagesx($img_src), imagesy($img_src));
header('Content-Type: image/jpeg');
imagejpeg($img_dst);
В чем же дело? А в том, что все почему-то игнорируют функцию imagecreatetruecolor() и с бараньим упорством используют imagecreate()
 

fixxxer

К.О.
Партнер клуба
Сэр явно не понимает разницу между resize и resample. А также разницу между { разницами между resize/resample и indexed color/true color }.
 

Фанат

oncle terrible
Команда форума
Валечка.
Я бы тебе порекомендовал найти более полезное занятие, чем у меня в глазах бревна искать.
 

Volk2k

Guest
Что же все-таки лучше, делать ресайз на лету или хранить маленькие изображения, которые бы создавались при аплоаде?
 

SiMM

Новичок
Volk2k, если картинки статические, то конечно последнее - на сервер нагрузка гораздо меньше. А когда именно ты будешь создавать картинку в кэше (при аплоаде или по первому обращению) - зависит от задачи.
 

Volk2k

Guest
SiMM, вот в это то и вопрос, я не могу оценить нагрузку на сервер в этих случаях... Ресайз и сохранение изображения тоже отнимает много ресурсов сервера.
 

fixxxer

К.О.
Партнер клуба
Сохранение ресурсов практически не кушает.
Так что считай, что у тебя будет происходить чаще - аплоад картинок или их просмотр:)
 

Volk2k

Guest
fixxxer, ну если так , то хорошо.
А может кто нибудь подкинет алгоритм аплоада с последующим сохранением именьшенной копии изображения.

P.S. в какой-то темебыл пример подобного рода, но что-то не могу его найти...
 

SiMM

Новичок
Автор оригинала: Volk2k
А может кто нибудь подкинет алгоритм аплоада с последующим сохранением именьшенной копии изображения.
Что из этого вызывает у тебя проблему? Возможные варианты ответа:
1. Аплоад.
2. Масштабирование.
3. И то, и другое.
Пункты 1 и 2 по отдельности не раз решались на форуме (попробуй воспользоваться поиском) - объединить их в один скрипт - думаю, проблемы составить не должно.
 

Volk2k

Guest
SiMM, проблема быстрое масштабирование и сохранение. Все что я находил на форуме касалось собственно масштабирования и вывода на экран на лету, для чего требовалось много ресурсов сервера. Мне же нужно масштабировать изображения и сохранять их, расходуя как можно меньше ресурсов.
 

SiMM

Новичок
Автор оригинала: Volk2k
SiMM, проблема быстрое масштабирование и сохранение.
Ты не можешь разбить задачу на два этапа и решать её поэтапно?
1. Выясни наконец, как работать с uploaded-файлами (массив $HTTP_POST_FILES).
2. Напиши процедуру масштабирования картинки и сохранения её в файл (для сохранения можешь воспользоваться, к примеру, [m]ImageJpeg[/m] с указанием 2-го параметра).
Все что я находил на форуме касалось собственно масштабирования и вывода на экран на лету
Ты не способен склеить два готовых скрипта?
Мне же нужно масштабировать изображения и сохранять их, расходуя как можно меньше ресурсов.
Ну и сохраняй результат работы "масштабатора" - в чём проблема?
 

Volk2k

Guest
SiMM, с upload-ом нет проблем.

Масштабирование с уменьшением я сделал так:
Getimagesize(); // определяем размер текущей картинки
ImageCreateFromJPEG(); // получаем идентификатор текущей картинки
ImageCreateTrueColor();// создаём новую картинку
imagecopyresampled(); // пропорционально изменяем размер
ImageJPEG();// сохранение

Но такой алгоритм нехило загружает сервер или я не прав?
 
Сверху