0

我正在创建一个数据库,它基本上可以处理音乐专辑插图及其不同大小。专辑插图由缩略图、主封面图像、缩放图像和其他类型的图像组成。大小比例方面因专辑格式而异。因此,CD 专辑的缩略图可能是 50 像素 x 50 像素,但对于 CASSETTE,它可能是 35 像素 x 50 像素...

IE:

  • CD 将包含 3 种或更多尺寸(拇指、主要、缩放等)的封面插图(类型)

  • CD 还将包含 3 种或更多尺寸(拇指、主要、缩放等)的镶嵌 cd 图稿(类型)

在网上搜索,似乎有不同的方法可以实现这一点。

方法一:

  • 有一个带有输入字段的表单来输入数据
  • 有一个上传输入字段来上传图像(高质量的图像......我们称之为 imageX),它将用于创建不同的尺寸。
  • 验证 imageX 是否可接受(大小、类型等...)
  • 现场创建不同的尺寸,并在数据库中为创建的每个尺寸添加一条记录。每条记录都包含大小(宽度和高度)和文件名

数据库模型:

artworktype 
========== 
artworktype_id, artworktype

artworksize 
========== 
artworksize_id, artworksize 

artwork 
========== 
artwork_id, album_id, artworktype_id, artworksize_id, filename, filenamewidth, filenameheight 

优点:

包括宽度和高度(无需启动 PHP 的 imagegetsize 来获取大小)

缺点:

冗余数据?

方法二:

  • 有一个带有输入字段的表单来输入数据
  • 有一个上传输入字段来上传图像(高质量的图像......我们称之为 imageX),它将用于创建不同的尺寸。
  • 验证 imageX 是否可接受(大小、类型等...)
  • 在现场创建不同的大小并相应地将它们移动到文件系统(命名约定待定)
  • 仅为上传的文件在数据库中创建一条记录。
  • 让 PHP 确定大小并使用命名约定来获取其他大小

数据库模型:

artworktype 
========== 
artworktype_id, artworktype

artwork 
========== 
artwork_id, album_id, artworktype_id, filename

优点:

无冗余

缺点:

需要 PHP 的 getimagesize 函数来获取大小。对于图像,这是可以接受的。但是,对于许多图像(如一批缩略图),这可能会给服务器带来压力。

有没有标准可以实现这一目标?其他人是如何做到的?有什么意见吗?

编辑:我不喜欢数据库中的二进制数据......所以这个选项是不可能的......

4

1 回答 1

0

blob为此使用 a 。我在类似的应用程序中做过。查看我的代码:

PHP代码:

$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    |                |
+--------+---------------+------+-----+---------+----------------+

HTML 代码:

<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>
于 2012-08-31T20:53:26.030 回答