PHP / JS - создавайте миниатюры на лету или сохраняйте их в виде файлов - PullRequest
2 голосов
/ 19 сентября 2008

Для веб-приложения для размещения изображений:

Для моих сохраненных изображений возможно ли создавать миниатюры на лету с помощью PHP (или чего-либо еще), или я должен сохранить 1 или более миниатюр разных размеров на диск и просто загрузить их?

Любая помощь приветствуется.

Ответы [ 5 ]

11 голосов
/ 19 сентября 2008

Сохранение миниатюр на диск. Обработка изображений занимает много ресурсов и, в зависимости от размера изображения, может превышать допустимый предел памяти по умолчанию для php. Это не имеет значения, если у вас есть собственный сервер, на котором работает только ваше приложение, но для изменения размера изображений по-прежнему требуется много ресурсов процессора и памяти. Если вы все равно планируете создавать миниатюры на лету, вам не нужно много менять - при первом запросе создайте миниатюру из исходного файла, сохраните ее на диск, а при последующих запросах просто прочитайте ее с диска.

2 голосов
/ 20 сентября 2008

Я использую phpThumb , так как это лучшее из обоих миров. Вы можете создавать эскизы на лету, но он автоматически кэширует изображения для ускорения будущих запросов. Это создает хорошую оболочку вокруг библиотек GD и ImageMagick. Стоит посмотреть!

1 голос
/ 19 сентября 2008

Это зависит от модели использования сайта, но, в принципе, сколько раз вы ожидаете, что каждое изображение будет просмотрено?

В случае с миниатюрами, они, скорее всего, будут присутствовать довольно долго (изображение загружается один раз и никогда не изменяется, поэтому миниатюра также не меняется), поэтому, как правило, стоит генерировать, когда полная изображение загружено и сохраните их для дальнейшего использования. Если сайт не будет полностью мертвым, их будут просматривать много (сотни или тысячи) раз в течение срока их службы, и в наши дни диск намного дешевле, чем время ожидания. Это также становится более значительным при увеличении нагрузки на сервер.

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

Или, если вы хотите получить фантазию, вы можете оптимизировать работу с любым шаблоном доступа, генерируя изображения «на лету» в первый раз, когда они необходимы, а затем показывая предварительно сгенерированное изображение до тех пор, пока не будут сгенерированы данные. Из изменений, в этот момент вы удаляете его, чтобы он был восстановлен в следующий раз, когда это необходимо. Но это было бы излишним для чего-то столь же статичного, как миниатюры, ИМО.

1 голос
/ 19 сентября 2008

Было бы намного лучше кэшировать миниатюры. Генерация их на лету была бы очень сложной для системы.

0 голосов
/ 19 сентября 2008

посмотрите библиотеку gd и imagemagick

...