System.Drawing.Imaging.Imageformat のどのフォーマットがどのシナリオで最適なオプションですか?
アプリケーションのメモリ消費量と画像の品質に関心があります。
私のアプリケーションでは、品質が優先されず、画像のコンテンツだけが表示される必要があるメモリに画像をロードしています。どの画像形式がここに最適ですか?
System.Drawing.Imaging.Imageformat のどのフォーマットがどのシナリオで最適なオプションですか?
アプリケーションのメモリ消費量と画像の品質に関心があります。
私のアプリケーションでは、品質が優先されず、画像のコンテンツだけが表示される必要があるメモリに画像をロードしています。どの画像形式がここに最適ですか?
メモリ管理は無関係です -ImageFormat
メモリ内のビットマップを IO ストリーム (ディスク上のファイルなど) に保存するときのフォーマットを制御するために使用されます。
Image
.NET の s はBitmap
s または vectorMetafile
です。Bitmap
つまり、作成する各インスタンスは常にStride * Height * PixelFormat
メモリのバイトを占有します。
十分に圧縮された PNG または JPEG 画像のバイトをメモリ内 (おそらくMemoryStream
またはByte[]
配列内) に保持することはできますが、それを使って何もすることはできません (たとえば、画面に表示したり、画像のピクセルを変更したり、など) メモリ内でラスター ビットマップとして表されるまで、GDI+ (つまりSystem.Drawing.*
) が必要とするためです。
(はい、例外があります。たとえば、JFIF をメモリにロードして DCT ブロックを操作する (a la jpegtran
)、または圧縮された画像を直接グラフィックス カードのメモリに読み込む機能を持つ Direct3D や OpenGL などのグラフィックス API を使用する (ただし、その場合でも、テクスチャはラスター形式でメモリ内に残ります)。