我正在创建一个基本上处理音乐专辑图片及其不同尺寸的数据库。专辑图片由缩略图,主封面图像,缩放图像和其他类型的图像组成。尺寸比率方面根据相册的格式而不同。所以CD专辑的缩略图可能是50px乘50px,但对于CASSETTE来说,它可能是35px乘50px ......
即:
CD将包含3种或更多尺寸的封面图片(类型)(缩略图,主要,缩放等)。
CD还将包含3种或更多尺寸的镶嵌cd艺术品(类型)(缩略图,主要,缩放等)。
在网上搜索,似乎有不同的方法来实现这一点。
方法1:
数据库模型:
artworktype
==========
artworktype_id, artworktype
artworksize
==========
artworksize_id, artworksize
artwork
==========
artwork_id, album_id, artworktype_id, artworksize_id, filename, filenamewidth, filenameheight
优点:
包含宽度和高度(无需启动PHP的imagegetsize来获取大小)
缺点:
冗余数据?
方法2:
数据库模型:
artworktype
==========
artworktype_id, artworktype
artwork
==========
artwork_id, album_id, artworktype_id, filename
优点:
无冗余
缺点:
需要PHP的getimagesize函数才能获得大小。对于图像,这是可以接受的。但是,对于许多图像(如一批缩略图)而言,这可能是服务器的压力。
是否有标准可以实现这一目标?其他人如何做到这一点?有什么意见吗?
EDITED : 我不是db中二进制数据的粉丝......所以这个选项不是问题......
答案 0 :(得分:0)
为此使用blob
。我在类似的应用程序中完成了。看看我的代码:
$fp = fopen($_FILES['image']['tmp_name'], 'r');
$data = fread($fp, filesize($_FILES['image']['tmp_name']));
$data = addslashes($data);
$type = $_FILES['image']['type'];
fclose($fp);
if(mysql_query("UPDATE `entries` SET `phblob` = '$data', `phtype` = '$type' WHERE `id` = '" . $_GET['id'] . "'"))
$uploaded = true;
+--------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| phblob | longblob | YES | | NULL | |
| phtype | varchar(64) | YES | | NULL | |
+--------+---------------+------+-----+---------+----------------+
<form method="post" enctype="multipart/form-data">
<input name="image" accept="image/jpeg, image/png, image/gif" type="file">
<input value="Submit" type="submit">
</form>