0

我正在.net 4.0 c# 中构建一个 Windows 项目。

我现在将图像保存到硬盘驱动器,这根本不占用任何内存,因为我只在我想查看它时才加载图像。但现在我需要删除在硬盘驱动器中创建图像并以其他方式创建它。就像创建内存流并将其保存到对象并将其序列化到硬盘驱动器一样。重要的部分是我不能在硬盘驱动器中看到图像,它们必须加密或在对象或其他东西中。

所以....当我尝试将它放入内存流并将其保存到列表中然后将其序列化到驱动器时​​,我得到了一个巨大的程序内存分配,因为对于我创建的每个图像,并保存为我的内存流清单,我分配了那个内存,我的程序变得超过 2-300 mb。

我真的不知道如何做到这一点,我可以以某种方式将其保存到内存流中而不是在程序中分配该内存吗?或者可以以其他方式保存它而不让图片在硬盘驱动器中作为图像完全可见?

正如我所说,主要的事情是,我不能将图像作为普通图像保存在硬盘上,如果没有应用程序,用户一定不能查看它们。而且我需要找到一种不分配所有计算机内存的方法。

先感谢您!

4

3 回答 3

1

将其保存到内存流中,而不是在程序中分配该内存

不,如果它在内存流中,它显然在 RAM 中。

因此,您需要将图像完全存储在 RAM 中,或者将其保存到磁盘。

如果您不希望它在磁盘上可见,那么您需要对文件进行加密,以便用户无法在您的应用程序之外查看它。加密的强度取决于您希望破解的难度。如果您不太在意,那么非常基本的 XOR 加密将非常快并且不会增加文件的大小。如果您确实关心,那么您想使用 3DES 之类的东西。

于 2012-09-10T11:10:48.657 回答
0

文件访问是建立在流的原理上的,可以串在一起。您可以做的是,不是通过文件流直接从磁盘读取/写入图像,而是CryptoStream在它之间插入一个。

于 2012-09-10T11:18:33.887 回答
0

您可以使用 GZIPStream 和 CryptoStream 使图片更小和加密。

本文向您展示了具体方法;

http://www.liensberger.it/web/blog/?p=33

于 2012-09-10T11:36:28.453 回答