web-dev-qa-db-ja.com

データベースなしで画像の順序を保存する

古典的な質問は、画像をデータベースに保存するか、ファイルシステムに保存するかです。私の場合、おそらくファイルシステムに保存するのが最善だと思います。

ただし、アルバムと画像の特定の順序は非常に重要です。もともと、最終変更日順に画像を表示し、その値を人為的に変更して順序を変更することでこれを実現できると考えていました。ただし、変更された時間が不本意に変更されると、アルバムに新しい画像を追加するとすべての画像が並べ替えられるため、この方法には欠陥があります。

データベースを使用せずに注文を追跡する方法について誰かにアドバイスをいただけますか?

(この質問がここにあるのか、それともstackoverflowにあるのかは100%わかりませんが、私はチャンスをつかんでおり、間違っている場合は気軽に修正してください。)

3
Chaim

シンプルなテキストファイルを使用して、実際のデータベースをシミュレートできます。 folder = albumの場合、画像の順序を各フォルダーのテキストファイルに保存します(たとえば、order.txt.dbなどの同じファイル名)。

可能なファイル形式:

  • ファイルから読み取った後に解析する必要がある単一行のテキスト(例:file1.jpg|file2.jpg|file5.jpg|file3.jpg)-実際のファイル名の一部ではない正しい区切り文字を選択すると解析しやすくなります。

  • ファイルごとに1行(各行が新しい行にある)-新しい行はファイル名の一部ではない明確な一意の区切り文字であるため、さらに良いかもしれません。

  • スクリプト言語固有の形式(例:PHPの直列化された配列 serialize() 関数を使用)-簡単に非直列化でき、追加の解析なしですぐに使用できます(非シリアル化ルーチンがすべての解析ジョブを実行するため)。


ホスティングプランがMySQLまたは同様のデータベースエンジンを許可/サポートしていない場合..SQLiteをサポートする可能性があります-高速で1つのデータベース= 1つのファイルサイト上の他のファイルとして保存できます(読み取り/書き込みアクセスのみが必要です)。


別のアプローチは、ファイル名の名前を変更してソート順番号を含めることです(例:001-file1.jpg002-file5.jpgなど)管理が複雑です(ファイル変更時間の使用と同様の問題があります)。

5
LazyOne

プログラミングオプションは、jpgファイルのEXIFデータに画像の順序を保存することです。

使用できるUserCommentまたはImageDescriptionプロパティがあります-これらはもちろん画像でまだ使用されていないと仮定します。

これは、外部ファイル/データベースを使用したり、ファイルの名前やタイムスタンプを変更するよりも遅くなりますが、自己完結型です。

2
ChrisF