самый быстрый способ динамического получения размеров изображения - PullRequest
6 голосов
/ 26 июля 2010

Один из способов улучшить загрузку страницы - указать размеры изображения (ширина по ширине). В PHP это можно сделать с помощью getimagesize (), однако я могу представить, что это будет довольно медленно выполняться, если у вас много изображений.

Каков наилучший способ динамического получения размеров изображений многих изображений с минимальным эффектом при загрузке страницы. Мы говорим о 50+ изображениях.

Ответы [ 4 ]

7 голосов
/ 26 июля 2010

Я только что протестировал 55 изображений размером более 5 МБ:

ImageMagick getImageGeometry занял 5.3 seconds (потому что после каждого файла вы должны воссоздавать объект Imagick), в то время как getimagesize проходил через изображения в 0.032 seconds. Последнее более чем приемлемо.

Если нет, сохраните размеры в базе данных.

РЕДАКТИРОВАТЬ: Кроме того, если вы получаете файлы через TCPIP, это значительно замедляет процесс. Итак, если вы называете это так:

getimagesize('http://www.blabla.com/pic.jpg');

Вместо

getimagesize('localdir/hereiam/pic.jpg');

Вы получаете некоторые издержки сети.

Кроме того, если эти изображения постоянно содержат данные EXIF ​​(сделанные с помощью цифровой камеры), то вы можете использовать функции PHP exif_, например: exif_read_data.

Вопрос: какую версию PHP вы используете? В более старых версиях 4.x возникали меньшие проблемы с определением размера изображения в определенных файловых системах.

2 голосов
/ 26 июля 2010

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

Это также делает возможным создание более универсальной коллекции изображений, поскольку вы можете использовать операторы SQL для группировки изображений по своему усмотрению.Например, «показывать картинки с сегодняшнего дня», «показывать картинки с прошлой недели» и т. Д.

Если ваша коллекция небольшая, а база данных изображений не подходит, сначала следует попробовать, как ваш сайт работает сравнина getimagesize().

0 голосов
/ 24 декабря 2012

самый быстрый способ получения изображений размером

https://github.com/tommoor/fastimage

0 голосов
/ 26 июля 2010

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

В таком случае я бы изменил размер загруженных изображенийкогда они загружены и всегда знают их размер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...