0

基本的に音楽アルバムのアートワークとそのさまざまなサイズを処理するデータベースを作成しています。アルバム アートワークは、サムネイル、メイン カバー画像、ズーム画像、その他の種類の画像で構成されます。アルバムのフォーマットによってサイズ比率のアスペクトが異なります。つまり、CD アルバムのサムネイルは 50 ピクセル x 50 ピクセルですが、カセットの場合は 35 ピクセル x 50 ピクセルになります...

すなわち:

  • CD には、3 つ以上のサイズ (サムネイル、メイン、ズームなど) の表紙アートワーク (タイプ) が含まれます。

  • CD には、3 つ以上のサイズ (サム、メイン、ズームなど) のインレイ CD アートワーク (タイプ) も含まれます。

ネットで検索すると、これを達成するためのさまざまな方法があるようです。

方法 1:

  • データを入力するための入力フィールドを持つフォームを用意する
  • さまざまなサイズを作成するために使用される画像 (高品質の画像... imageX と呼びましょう) をアップロードするためのアップロード入力フィールドを用意します。
  • imageX が受け入れられるかどうかを検証します (サイズ、タイプなど...)
  • その場でさまざまなサイズを作成し、作成されたサイズごとにデータベースにレコードを追加します。サイズ (幅と高さ) とファイル名が各レコードに含まれています

データベース モデル:

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

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

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

長所:

幅と高さが含まれています (サイズを取得するために PHP の imagegetsize を起動する必要はありません)。

短所:

冗長データ?

方法 2:

  • データを入力するための入力フィールドを持つフォームを用意する
  • さまざまなサイズを作成するために使用される画像 (高品質の画像... imageX と呼びましょう) をアップロードするためのアップロード入力フィールドを用意します。
  • imageX が受け入れられるかどうかを検証します (サイズ、タイプなど...)
  • その場でさまざまなサイズを作成し、それに応じてファイルシステムに移動します (命名規則は決定されます)。
  • アップロードされたファイルのみのレコードをデータベースに作成します。
  • PHP にサイズを決定させ、命名規則を使用して他のサイズを取得します。

データベース モデル:

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

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

長所:

冗長性なし

短所:

サイズを取得するには、PHP の getimagesize 関数が必要です。イメージとしては許容範囲です。ただし、多くの画像 (サムネイルのバッチなど) の場合、サーバーに負担がかかる可能性があります。

これを達成するための標準はありますか?他の人はどのようにしていますか?ご意見はありますか?

EDITED:私はデータベース内のバイナリデータのファンではありません...そのオプションは問題外です...

4

1 に答える 1

0

これには a を使用blobします。私は同様のアプリケーションで行いました。私のコードをチェックしてください:

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 に答える