Производительность эскиза изображения PHP? - PullRequest
2 голосов
/ 18 ноября 2011

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

В настоящее время я использую полноразмерное изображение и уменьшаю его, определяя значение высоты / ширины в теге img. Это кажется не очень эффективным, поэтому мой вопрос - каков рекомендуемый способ отображения миниатюр? Нужно ли вести вторую таблицу в БД для миниатюр или есть лучшее решение?

Ответы [ 6 ]

3 голосов
/ 18 ноября 2011

Обработка изображений требует значительных затрат (ЦП), лучше избегать их, где это возможно.

Мой совет: Создавайте эскизы при загрузке изображений в отдельные файлы изображений, чтобы вы могли определить, когда их создавать / изменять их размер, а не во время выполнения.

Если вам нужны ссылки на миниатюры в отдельном поле базы данных или вывести его из исходного имени, все зависит от вас - оба способа работают.

Это также упрощает реализацию дополнительных бустеров производительности (например, кэширование).

Я реализовал аналогичный процесс в php-проекте, это хороший способ для масштабирования. В моем случае я создаю миниатюры каждый вечер с помощью cron, потому что загрузка системы в это время очень низкая.

3 голосов
/ 18 ноября 2011

Если вы используете загрузчик для загрузки изображений на свой веб-сайт, сделайте так, чтобы PHP изменил размер исходного изображения и загрузил как оригинальный, так и меньший большой палец с каким-то префиксом в имени.Таким образом, вы можете легко получить изображения из вашей базы данных и просто использовать «filename.jpg» для обычных изображений и «thumb_filename.jpg» для большого пальца.Конечно, это можно сделать и без загрузчика, но вам придется вручную создавать / загружать эскизы.

1 голос
/ 18 ноября 2011

Например, создайте отдельную папку в изображениях, назовите ее thumnails (images / thumbnails), добавьте туда файлы с префиксом размера файла, например: «original_file_name_200X200.jpg», сохраните в базе данных «original_file_name» и расширением «jpg» для разделения полей ( name, ext), затем, когда вам нужно отобразить его, выберите префикс имени, добавьте размер и добавьте расширение, и вы получите /images/thumbnails/file_200X200.jpg, таким образом, вы можете позже добавить больше размеров, оставив оригинал без изменений.

0 голосов
/ 18 ноября 2011

вы можете использовать программу типа imagemagick для создания правильных миниатюр.

Если это ваш личный сайт, вы можете изменить размер пакета (есть powertool для xp, который делает это), а затем загрузить в каталог 200 иизмени свой кодОчевидно, это зависит от того, загружаете ли вы изображения.

imagemagick необходимо будет установить на сервере, но он изменит размер и позволит вам играть с размером изображений

0 голосов
/ 18 ноября 2011

Я использую phpTumb для создания миниатюр на лету.Вы также можете использовать его при загрузке изображения, чтобы изменить его размеры.У этого есть много других особенностей.Проверьте это.

0 голосов
/ 18 ноября 2011

Вы ищете что-то вроде того, что можно найти здесь: http://dtbaker.com.au/random-bits/php-simple-image-resize-thumbnail-generator.html (это превращает все изображения в JPEG)

Как указано @ martincarlin87 - просто нужно добавить проверку, чтобы увидеть, существует ли она в каталоге миниатюр, и либо отправить информацию, либо создать и отправить ее через. Это также можно превратить в функцию.

...