3

まず、この質問は「ビットマップをjpegとしてディスクに保存する方法」に関するものではありません。

BitmapJpeg圧縮を使用してを変換する方法を見つける(または考える)ことはできませんが、Bitmapオブジェクトとして保持します。MSDNは、ビットマップをJPEGとして保存する方法を明確に示していますが、私が探しているのは、Bitmapオブジェクトにエンコード/圧縮を適用する方法です。これにより、ファイルを参照せずに、コード内でビットマップを渡すことができます。

その背後にある理由の1つは、ビットマップを処理するヘルパークラスですが、使用される永続性メソッドを認識してはなりません。

4

3 に答える 3

5

プログラムメモリにロードされると、すべての画像はビットマップになります。通常、特定の圧縮はディスクへの書き込み時に使用され、解凍はディスクからの読み取り時に使用されます。

画像のメモリ内フットプリントが心配な場合は、バイトをzip圧縮して、バイト配列を内部に渡すことができます。zipは、画像の可逆圧縮に適しています。多くの画像圧縮では、さまざまなレベルの損失(sp?)があることを忘れないでください。言い換えると、圧縮によってデータが破棄され、可能な限り最小のバイト数で画像が格納されます。

解凍/圧縮は、メモリフットプリントを処理時間と交換するという点で、パフォーマンスのトレードオフでもあります。いずれにせよ、本当に凝ったものでない限り、何らかの方法で画像を操作する必要がある場合は、画像をビットマップにする必要があります。

これはあなたが面白いと思うかもしれない幾分似た質問に対する答えです。

于 2012-09-11T17:30:55.833 に答える
3

Bitmapエンコードされたメモリ内ストレージをサポートしていません。常にエンコードされていません(PixelFormat列挙型を参照)。おそらく、独自のラッパークラス/抽象化を作成するか、そのアイデアをあきらめる必要があります。

于 2012-09-11T17:31:28.437 に答える
1
var stream = new MemoryStream()
Bitmap.Save(Stream, ImageFormat)

それはあなたが必要なものですか?

于 2012-09-11T17:32:49.530 に答える