我有一个电子商务网站,将来会有很多图片。图像的当前表格设计如下。
id (Primary) int(11)
p_id int(11) // product id
original varchar(1000) // original image url
thumbnail varchar(1000) // thumbnail image url - 76x76
medium varchar(1000) // medium image url - 228x228
large varchar(1000) // large image url - 560x560
is_featured tinyint(4) // if featured image
表格名称:给定产品ID的pimages(允许多张图片)。
要做:它一直工作到现在,但我需要添加每个图像(原始,缩略图,中等和大)的高度/宽度来指定它们的尺寸以便我可以解析它们直接用于html,以便更快地进行浏览器渲染。
Catch :图片可能是也可能不是指定的尺寸。假设中等图像为228x50或200x228。
可能的解决方案:添加4个高度/宽度列,每个列一个。但这听起来不太好。
答案 0 :(得分:0)
相反,我建议您将pimages
表结构更改为此
id (Primary) int(11)
p_id int(11) // product id
image varchar(1000) // original image url
width int(11)
height int(11)
type enum('original', 'thumbnail', 'medium', 'large')
is_featured tinyint(4) // if featured image
因此,它意味着您将逐个存储所有图像,并且将根据您需要为每个分离的图像(宽度,高度......)作为匹配属性,并按类型type enum('original', 'thumbnail', 'medium', 'large')
将它们分开在你提到这个是你的'大'图像
答案 1 :(得分:0)
我要做出一些假设:
我还假设将来你需要超过4种尺寸(例如,视网膜显示器上的尺寸不是很大)。
在这种情况下,我有:
Table PRODUCTS
----------------
p_id (primary key)
.....
Table PRODUCT_IMAGES
---------------------
image_id (pk)
p_id (fk)
original_url
original_height
original_width
is_featured
table IMAGE_SIZES
-----------------
image_id (fk)
type enum('original', 'thumbnail', 'medium', 'large')
height
width
答案 2 :(得分:0)
无需将所有3张图像存储在数据库中:
你能做的是:
从原始图片,制作尺寸为中等尺寸拇指的尺寸为:250 * 250。左小拇指的尺寸为:100 * 100
例如,
对于产品1,您可以将它们保存到文件夹中,如原件/产品-1,介质/产品-1,拇指/产品-1
To fetch the original image: example.com/original/product-1
To fetch the medium thumb image: example.com/medium/product-1
To fetch the thumb image: example.com/thumb/product-1