1

我有一个MemoryStream10K 的文件,它是从 2MB 的位图创建并使用 JPEG 压缩的。由于MemoryStream不能直接放入System.Windows.Controls.ImageGUI,我使用以下中间代码将其转换回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 回答