PHP:使用getimagesize在数据库中输入图像尺寸

时间:2011-08-31 19:42:21

标签: php mysql database

我有许多图像,他们的信息存储在MySQL数据库中。图像本身存储在一个文件夹中,但数据库包含其URL以及其他相关数据。

我遇到了PHP getimagesize,我想用它来填充每个图片的width=标签的height=img属性。但是,我被告知这样的开销(因为有数百张图像)会大大减慢页面加载速度。

我很好奇是否有办法使用getimagesize从数据库中的信息中搜索出所有图片,计算他们的widthheight,然后将数据插入到数据库中的widthheight字段中,从而允许一个简单的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 :(得分:0)

$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中呢?

答案 1 :(得分:0)

此算法可能有所帮助:

  1. 编写一个返回宽度为null
  2. 的图片的URL和imgId的查询
  3. 对于每个图像,使用getimagesize()来获取图像大小
  4. 编写更新查询以通过imageid更新高度和宽度
  5. 尽管如此,我认为最好在用户点击页面时跳过更新的想法。在某些时候,图像数据的初始插入已经完成 - 您当时可以使用getimagesize(),还是在独立于您的网站执行扫描的单独程序中?

答案 2 :(得分:-1)

如果您不想使用getimagesize(),则无法获得图像大小。我认为当它们在本地保存时速度足够快