我有许多图像谁的信息存储在MySQL数据库中。图像本身存储在一个文件夹中,但数据库包含它们的URL以及其他相关数据。
我遇到了PHP getimagesize
,我正在考虑使用它来填充每个图像的img
标签的width=
和height=
属性。但是,有人告诉我,这样做的开销(因为有数百张图像)将大大减慢页面加载速度。
我很好奇是否有一种方法可以使用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 ;
$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中设置图像大小呢?
这个算法可能有帮助:
- 编写一个查询,返回宽度为null的图像的url和imgId
- 对于这些图像,使用getimagesize()来获取它们的图像大小
- 写一个更新查询来更新高度和宽度的imageid
也就是说,我认为最好跳过用户点击页面时更新的想法。在某些时候,图像数据的初始插入已经完成——您可以在那个时候使用getimagesize(),或者在一个独立于您的网站执行扫描的单独程序中使用吗?
如果您不想使用getimagesize(),则无法获取图像的大小。我觉得保存在本地已经足够快了