0

.net 4.0 c# で Windows プロジェクトを構築しています。

現在、画像をハードドライブに保存していますが、表示したいときに画像をロードするだけなので、メモリをまったく使用していません。しかし今、ハードドライブでのイメージの作成を削除し、別の方法で作成する必要があります。メモリ ストリームを作成してオブジェクトに保存し、ハード ドライブにシリアル化するようなものです。重要な部分は、画像をハードドライブに表示できないことです。画像は暗号化されているか、オブジェクトか何かに含まれている必要があります。

だから....それをメモリストリームに入れてリストに保存してからドライブにシリアル化しようとすると、作成するすべての画像に対してメモリストリームとして保存するため、巨大なプログラムメモリ割り当てが発生しましたリスト、私はそのメモリを割り当て、私のプログラムは 2 ~ 300 MB を超えます。

これを行う方法がまったくわかりません。どうにかしてメモリストリームに保存し、そのメモリをプログラムに割り当てないようにすることはできますか? または、ハード ドライブに画像として完全に表示されることなく、別の方法で保存できますか?

主なことは、私が言ったように、画像を通常の画像としてハードドライブに保存することはできません。アプリケーションなしでユーザーが表示できないようにする必要があります。そして、すべてのコンピューターのメモリを割り当てない方法を見つける必要があります。

前もって感謝します!

4

3 に答える 3

1

それをメモリストリームに保存し、そのメモリをプログラムに割り当てないでください

いいえ。メモリ ストリームにある場合は、明らかに RAM にあります。

そのため、イメージ全体を RAM に保存するか、ディスクに保存する必要があります。

ディスク上で表示したくない場合は、ファイルを暗号化して、ユーザーがアプリケーションの外部で表示できないようにする必要があります。暗号化の重さは、クラックをどれだけ難しくしたいかによって異なります。それほど気にしない場合は、非常に基本的な XOR 暗号化が非常に高速で、ファイルのサイズが増加しません。気にするなら、3DES のようなものを使いたいでしょう。

于 2012-09-10T11:10:48.657 に答える
0

GZIPStream と CryptoStream を使用して、画像を小さくし、暗号化することができます。

この記事では、その方法を正確に示します。

http://www.liensberger.it/web/blog/?p=33

于 2012-09-10T11:36:28.453 に答える
0

ファイル アクセスは、ストリームの原則に基づいて構築されており、チェーンに接続できます。あなたができることは、ファイルストリームを介してディスクとの間で画像を直接読み書きする代わりに、それらのCryptoStream間にプラグインすることです。

于 2012-09-10T11:18:33.887 に答える