1

MemoryStream2MB のビットマップから作成され、JPEG を使用して圧縮された 10K があります。MemoryStreamGUI 用に直接配置することはできないためSystem.Windows.Controls.Image、次の中間コードを使用してこれを変換しBitmapImage、最終的にSystem.Windows.Controls.Image.

私の質問は、これを に保存するBitmapImageと、メモリ割り当てに約 2MB かかるということです。これは期待されていますか?メモリを減らす方法はありますか?

約 300 のサムネイルがあり、この変換には約 600MB かかります。これは非常に高い値です。

あなたの助けに感謝!

4

1 に答える 1

2

メモリを減らす方法はありますか?

はい、そうです:画像自体からメモリストリームを作成しないでください。代わりに、画像のサムネイルを使用してください。

これを行う方法のサンプルコードは次のとおりです。

        private void button1_Click(object sender, EventArgs e)
            {
                Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                Bitmap myBitmap = new Bitmap(@"C:\Documents and Settings\Sameh\My Documents\My Pictures\Picture\Picture 004.jpg"); //3664 x 2748 = 3.32 MB
                Image myThumbnail = myBitmap.GetThumbnailImage(myBitmap.Width / 100, myBitmap.Height / 100 , myCallback, IntPtr.Zero); 
    //now use your thumbnail as you like
                myThumbnail.Save(@"C:\Documents and Settings\Sameh\My Documents\My Pictures\Picture\Thumbnail 004.jpg");
                //the size of the saved image: 36 x 27 = 2.89 KB
//you can create your memory stream from this thumbnail now
            }

            public bool ThumbnailCallback()
            {
                return false;
            }

そして、ここに解決策の詳細があります。

于 2010-05-21T03:33:17.307 に答える