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

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

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

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

Imagemagick's getImageGeometry заняла 5.3 seconds (потому что после каждого файла вам нужно воссоздать объект imagick), а getimagesize – через 0.032 seconds . Последнее более чем приемлемо.

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

EDIT: Кроме того, если вы получаете файлы через TCPIP, это значительно замедляет процесс. Итак, если вы так называете:

getimagesize('http://img.ruphp.com/optimization/pic.jpg');

Вместо

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

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

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

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

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

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

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

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

Если это так, я бы изменил размер загруженных изображений при их загрузке и всегда знал их размер

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

https://github.com/tommoor/fastimage