如何存储图像不使用资源

时间:2011-07-18 21:02:23

标签: c# image resources storage

我有一个C#应用程序,我需要保留她的照片,但我不能使用资源(resx)。 那么有另一种方法吗?

更新: 的解答: 我的图像是静态的,为此我将使用嵌入式资源

How create embedded resource

6 个答案:

答案 0 :(得分:2)

如上所述,它实际上取决于它们是静态的还是动态的。如果是静态的,您可以使用嵌入式资源(而不是像其他人提到的那样将它们编码为常量字节数组)。如果是动态的,您可以将它们存储在隔离存储中。

答案 1 :(得分:1)

这是一组动态的图片还是静态的?如果是静态的,则可以将资源文件编译为单独的程序集,然后使用它。如果是动态的,则需要某种类型的数据存储来存储文件。如果文件系统不起作用,则可以选择数据库。

答案 2 :(得分:0)

我想到了一个想法,但如果可能的话,我可能不会使用它:将图像作为字节数组放入代码中。

您可以为图片创建byte[]字段,并在代码中初始化它们。您可以使用CodeDOM或Reflection.Emit动态生成代码。

答案 3 :(得分:0)

如果图像不是太大,您可以在代码中将它们编码为巨大的常量数组。 这不是一个非常优雅的解决方案,但如果没有文件,没有资源,没有数据库还有什么呢?

答案 4 :(得分:0)

鉴于您给我们的选择,这并没有让我们有太多的工作要做。根据图片大小,您可以使用this website将图片编码为Base64,然后将其存储在string中。然后,您可以使用System.Convert.FromBase64String将它们从base64转换回字节数组。

另一种选择是将您的图像存储在Web服务器上,并在服务器上创建一个Web服务,您可以使用它来检索图像。

但这些并不是好方法。第一个想法是消耗更多的内存然后它需要和第二种方法如果你想一想就有点荒谬。使用数据库要好得多。您可以使用适用于Windows和Mono的MySQL等数据库。您还可以使用SQLite database以便数据库可移植。确实没有充分的理由将其存储在数据库中。

答案 5 :(得分:0)

我会继续说道:您可以使用任何提供安全加密的 Mono ZIP 库保存在磁盘上。

Zip :因为您可能会节省空间

加密:如果您需要保存一些私人数据(家庭图片,文档......)

可以根据您自己的应用程序逻辑对它们进行分组,也可以单独保存它们,还附带一些图元文件,如果您还需要提供一些图像信息。

Microsoft 使用此类“技术”作为 DOCX 文件。尝试将DOCX文件的扩展名更改为ZIP并将其解压缩到该文件夹​​中。你会看到内容。

问候。