2009-05-05 2 views
1

私は現在、約3000の画像の画像ライブラリを持っている.net WinForms 2.0アプリケーションを持っています。現在私はSQLiteを使用しており、すべての画像をBLOBとして一意のIDで格納しているため、検索が容易になります。WinFormsアプリケーション用に1つのファイルにたくさんの画像を保存するにはどうしたらいいですか?

エンドユーザーは、インストーラがコンピュータ上に大量の画像を解凍するのを心配する必要がなく、更新が行われると、ダウンロードしたユーザーのために1つのファイルをプッシュできますすべての新鮮なコピーです。ファイルはかなり大きくなる傾向があり(現在は約60メガバイト)、エンドユーザーはそれに慣れており、アプリケーションはダイヤルアップの場合には「画像なし」モードを備えています。

このすべての欠点の1つは、ライブラリを生成することが時には少し難解かもしれないということです。データはバイナリ形式に変換されなければならない、私は対応するIDが適切にリンクされていることを確認する必要があります。ライブラリを生成するジョブは、実行にも時間がかかります。

私はアプリケーションをアップグレードする途中ですが、これを行うより良いアプローチがあるのだろうかと思います。私はまだユーザーに更新を送信し、コンピュータのフットプリントを小さく保つために、単一ファイルのアプローチを維持したいと思います。そこに私は簡単にアプリケーションのデータベースと対話することなく、そこから画像を挿入/取得できるようにする/携帯電話ファイルシステムやリソースライブラリを使用することができますか?

+0

イメージは何ですか?ユーザーデータまたはアプリケーションリソースなぜ彼らはハードドライブ上の画像のフォルダとして、またはオプションのアドインインストーラとして配備できないのですか? –

+0

アプリケーションリソース。ユーザーがマスターデータベースからカードの詳細をプルアップし、対応するイメージが他のイメージから引き出されます。アプリケーションの全体的なファイル数を最小限に抑えることができれば、画像のフォルダを持たないようにしたいと思います。以前は、画像そのものの乱用(長編)に対する懸念があったため、その意味で保護されていたことにも対処しました。 –

+0

どのような方法を使用しても、ユーザーが画像を使用しないようにすることはありません。 DRMが教えてくれた1つの教訓です。あなたの主な関心事がファイルの拡散を最小限に抑えるなら、ZIPファイルは良い解決策です。 –

答えて

3

resxファイル(リソースdllにコンパイル)?またはより簡単です - zipファイルですか? #ZipLibを使用している可能性があります。

+0

私はzipファイルを使用した場合、アーカイブ全体を解凍することなくイメージファイルを選択的に引き出すことができますか? –

+0

はい、必要なものだけを抽出することができます。 –

+1

はい - zipアーカイブには基本的にファイルヘッダテーブルがあり、個別にファイルを抽出することができます。または、少なくとも不要と思われるファイルをスキップすることができます。 #ziplibサンプルには、このすべてまたは一部が表示されています。これはあまり面倒ではありません。 –

0

7zipをもまた、あなたは、Webサーバーをオフに提供されるように画像を移動することができ、ローカルクライアントキャッシュにイメージを持っているし、クライアントの方法を持ってthis

を参照してください、あなたも使用できるライブラリを持っています更新された画像を定期的にチェックすることで、必要な画像のみをダウンロードする必要があります。

ダイヤルアップユーザー用に低解像度のバージョンを使用することもできます。

0

同様の状況でImageListコントロールとAddStripメソッドを使用しました。私はすべての画像を含む1つの巨大なPNGファイルを持っています。これはアイコンには適していますが、他の種類のリソースではうまく機能しません。

0

状況によっては、カスタムISAMタイプファイルが考えられます。

全体的なファイルレイアウトは次のようになります。カウントがファイル内の画像の数を含む整数であろう

 
---------------- 
| offset | int | 
---------------- 
| size | int | 
--------------------------- 
| description | char(50) | 
--------------------------- 
| id | int | 
---------------- 

 
---------------- 
| Count | int | 
---------------- 
| Index | 
---------- 
| Images | 
---------- 

インデックス形式。インデックスには、シークするファイルへのオフセットとそのオフセットから読み込むバイト数を記述する(オフセット、サイズ)のペアが含まれます。

この形式の欠点は、既存の画像を置き換えるにはファイルを再構築する必要があることです。

説明やIDのような固定長のメタデータをヘッダーに入れることができます。

(おそらく、この狂気の方法の1つは、インデックスをRAMに保持している場合のアクセス速度です)

関連する問題