【发布时间】:2010-03-15 23:47:23
【问题描述】:
我正在从事一个 Silverlight 项目,用户可以在其中创建自己的拼贴画。
问题
当使用 BitmapImage 类加载一堆图像时,Silverlight 会占用大量不合理的 RAM。 150 张图片,其中单张最多 4.5mb 占用大约 1.6GB 的 RAM - 因此最终引发内存异常。
我通过流加载它们,因为用户选择了他们自己的照片。
我在寻找什么
一个类、方法或一些进程来消除大量被占用的 RAM。速度是个问题,所以我不想在图像格式或类似格式之间进行转换。快速调整大小的解决方案可能会奏效。
我尝试使用 WriteableBitmap 将图像渲染到其中,但我发现这种方法迫使我在拖放和其他我希望用户能够对图像执行的操作方面重新发明轮子。
【问题讨论】:
-
所以...您想要一个高效的解决方案,但您不想使用提高效率的方法,即在较低级别处理图像?为什么不?我不了解 Silverlight,希望您能找到解决方案,但有时您确实必须卷起袖子做一些工作。
-
问题只是内存效率。我不需要快速渲染或快速修改图像数据本身——我只需要使用内存中的实际 JPEG 数据来表示它并稍后将其合并到一个 pdf 中。我使用的 PDF 框架要求我输入 JPEG 数据流,但我没有看到将 BitmapImage 转换为 JPEG 流的好方法。
-
您能否提供一些关于您的程序如何工作的代码,以及您的图像的一般尺寸是多少?您一次显示多少个?
标签: c# .net silverlight silverlight-3.0