私はこの質問が何度も尋ねられていることを知っていますが、私は複数のサイズを持つイメージを格納することについてです。1つのイメージ、ファイルシステムまたはデータベースのアプローチの複数のサイズを格納します
私のイメージはファイルシステムに保存されることに決めました。それで、チェックされました!
入力タイプ=「ファイル」はPHPでUNID機能を使用して一意のIDが与えられますを介してアップロードすべてのマスターイメージ:uniqid(「fc_」、true)の
は今、私のジレンマは異なるを格納する方法でありますマスターイメージのサイズ(または子)。
現在、マスタイメージにはデータベースのレコード(ID、タイトル、説明、タイプ、ファイル名)が含まれており、ファイルシステムに格納されています。異なるサイズのマスターイメージはファイルシステムに直接移動します(データベースにレコードはありません)。マスターイメージのuniqidといくつかの追加されたテキストを使用して名前を付けました。だから、:
Master: fc_345679849.89675849.jpg
size (30px) : fc_345679849.89675849_tiny.jpg
size (50px) : fc_345679849.89675849_small.jpg
size (100px) : fc_345679849.89675849_medium.jpg
size (500px) : fc_345679849.89675849_large.jpg
私はこのシステムに多くを見て始めたときや他の人がそれを行う方法、それは正しいアプローチであった場合、私はより疑わしいとなりました。
私が考えていたもう1つのアプローチは、データベースにサイズの異なるものを含め、すべてのイメージ(実際のイメージではなくイメージへの参照)を格納する方法でした。彼らはすべてそのような、それが適用される場合は、マスターイメージへの参照を主キーを持っているとします:
id, ..., filename, master_imageid
_____________________________
1, ... , 34.jpg, NULL
2, ... , 23.jpg, 1
3, ... , 45.jpg, 1
4, ... , 12.jpg, 1
5, ... , 8.jpg, 1
ので画像がマスター、そして残りの(異なるサイズ)ではの子でありますマスターは...画像2、3、4、5
したがって、システム#1:マスターのレコード1つで、子供はデータベースレコードを持たず、それぞれのファイル名に便利なテキストがあり、マスター。
システム#2:マスターのための1レコードと、各子供のための1レコード。子供のファイル名に便利なテキストを追加する必要はありません。列にはmaster_imageidが自動的にそれらをマスターにリンクします。
最高の解決策は何ですか?
ありがとうございます。
データベース内のファイルはめったに良い考えではありません。データベースにメタデータを格納し、そこにあるファイルシステムを使用してファイルを格納します。 –
彼はファイルシステムを使ってデータを保存していると述べています。すでにデータをDBに保存しています。 – susmits
JPEG画像を扱っているときにJPEG2000を使用したい場合は、[JPIP] /en.wikipedia.org/wiki/JPIP)、あなたが扱っているサイズでは大きなメリットはないかもしれません。おそらく、マスターが非常に大きなサイズだったとします。 – Joe