首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自BitmapSource的MemoryStream,需要减少内存消耗

来自BitmapSource的MemoryStream,需要减少内存消耗
EN

Stack Overflow用户
提问于 2010-05-21 10:31:42
回答 1查看 1.3K关注 0票数 1

我有一个10K的MemoryStream,它是从2MB的位图创建的,并使用JPEG压缩。由于MemoryStream不能直接放在图形用户界面的System.Windows.Controls.Image中,因此我使用以下中间代码将其转换回BitmapImage并最终转换回System.Windows.Controls.Image

我的问题是,当我将其存储在BitmapImage中时,内存分配大约占用2MB。这是意料之中的吗?有什么方法可以减少内存吗?

我有大约300个缩略图,这个对话大约需要600MB,这是非常高的。

感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-21 11:33:17

有什么方法可以减少内存吗?

是的,他们是:不要从图像本身创建你的记忆流,而是使用它的缩略图。

下面是一个如何做到这一点的示例代码:

代码语言:javascript
复制
        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;
            }

关于解决方案的here is more details

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2879239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档