PHP: используйте getimagesize для ввода размеров изображения в базу данных - PullRequest
1 голос
/ 31 августа 2011

У меня есть несколько изображений, информация которых хранится в базе данных MySQL. Сами изображения хранятся в папке, но база данных содержит их URL, а также другие соответствующие данные.

Я наткнулся на PHP getimagesize, который я собирался использовать для заполнения свойств width= и height= тегов img каждого изображения. Однако мне сказали, что накладные расходы на это (поскольку существуют сотни изображений) существенно замедляют загрузку страницы.

Мне любопытно, есть ли способ использовать getimagesize для поиска всех изображений по их информации в базе данных, вычислить их width и height, а затем вставить данные в соответствующие им width и height поля в базе данных, что позволяет выполнить простой SQL-запрос?

Вот моя структура базы данных:

CREATE TABLE `secondary_images` (
  `imgId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `primaryId` int(10) unsigned DEFAULT NULL,
  `imgURL` varchar(255) DEFAULT NULL,
  `width` varchar(255) DEFAULT NULL,
  `height` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`imgId`),
  KEY `primaryId` (`primaryId`),
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;

Ответы [ 3 ]

0 голосов
/ 31 августа 2011
$image_folder = "images/";
$res = mysql_query('SELECT * FROM secondary_images')
while ($row = mysql_fetch_assoc($res)) {
    $size = getimagesize($image_folder.$row['imgUrl']);
    mysql_query("UPDATE secondary_images SET width='{$size[0]}', height='{$size[1]} WHERE imgId='{$row['imgId']}'");
}

Почему вы все равно хотите поместить размер изображения в html?

0 голосов
/ 01 сентября 2011

Этот алгоритм может помочь:

  1. Напишите запрос, который возвращает URL и imgId изображений с нулевой шириной
  2. Для каждого из этих изображений используйте getimagesize (), чтобы получить размер их изображения
  3. Написать запрос на обновление высоты и ширины с помощью imageid

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

0 голосов
/ 31 августа 2011

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

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