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

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

Чтобы остальные не запутались:
--- вот это ---
eregi(".(.*)$",$image,$regs);
$srcWidth = ImageSX($srcImage);
$srcHeight = ImageSY($srcImage);
--- заменить можно на это ---
$imgParams = getImageSize($image);
/*
$imgParams[0] - ширина
$imgParams[1] - высота
$imgParams[2] - тип файла (типа раширение)
$imgParams[3] - размер файла
*/
------------------
 
Zeratul писал
ну а поподробнее - пример кода?
именно поэтому я выложил сюда готовую функцию. Я не писал, что она является абсолютным эталоном правильного программирования и что ее должны применять все. Это просто пример, который работает. На счет getImageSize полностью согласен, а чтобы писать в файл надо добавить всего пару строк. Опять таки, это пример функции ресайза (в данном случае - налету) а не готовый скрипт.
 
Похоже Zeratul писал не про тот пример (виноват, был невнимательным), тем не менее, R00miss спросил "как это сделать?" (т.е. как ресайзить картинку), на что ему выдали различные ссылки. Я решил привести пример готового (пусть, не идеального) кода
 
Question, а что тебе мешает их закэшировать? Нагрузка будет гораздо меньше.
 
А использовать данные, полученные выше, через 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()
 
Сэр явно не понимает разницу между resize и resample. А также разницу между { разницами между resize/resample и indexed color/true color }.
 
Валечка.
Я бы тебе порекомендовал найти более полезное занятие, чем у меня в глазах бревна искать.
 
Что же все-таки лучше, делать ресайз на лету или хранить маленькие изображения, которые бы создавались при аплоаде?
 
Volk2k, если картинки статические, то конечно последнее - на сервер нагрузка гораздо меньше. А когда именно ты будешь создавать картинку в кэше (при аплоаде или по первому обращению) - зависит от задачи.
 
SiMM, вот в это то и вопрос, я не могу оценить нагрузку на сервер в этих случаях... Ресайз и сохранение изображения тоже отнимает много ресурсов сервера.
 
Сохранение ресурсов практически не кушает.
Так что считай, что у тебя будет происходить чаще - аплоад картинок или их просмотр:)
 
fixxxer, ну если так , то хорошо.
А может кто нибудь подкинет алгоритм аплоада с последующим сохранением именьшенной копии изображения.

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

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

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