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


PHP: Use getimagesize to enter image dimensions in database

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

我遇到了PHP getimagesize,我正在考虑使用它来填充每个图像的img标签的width=height=属性。但是,有人告诉我,这样做的开销(因为有数百张图像)将大大减慢页面加载速度。

我很好奇是否有一种方法可以使用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 ;
$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. 编写一个查询,返回宽度为null的图像的url和imgId
  2. 对于这些图像,使用getimagesize()来获取它们的图像大小
  3. 写一个更新查询来更新高度和宽度的imageid

也就是说,我认为最好跳过用户点击页面时更新的想法。在某些时候,图像数据的初始插入已经完成——您可以在那个时候使用getimagesize(),或者在一个独立于您的网站执行扫描的单独程序中使用吗?

如果您不想使用getimagesize(),则无法获取图像的大小。我觉得保存在本地已经足够快了