繁体   English   中英

如何存储图片不使用资源

[英]How to store images do not use the resources

我有一个 C # 应用程序,我需要保留她的图片,但我不能使用资源 (resx)。 那么有没有替代的方法呢?

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

如何创建嵌入式资源

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

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

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

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

如果图像不是太大,您可以在代码中将它们编码为巨大的常量 arrays。 这不是很优雅的解决方案,但如果没有文件、没有资源、没有数据库,还能怎么办?

鉴于您给我们的选项,这并没有给我们留下太多的工作余地。 根据图像大小,您可以使用此网站将图像编码为 Base64,然后将它们存储在string中。 然后您可以使用System.Convert.FromBase64String将它们从 base64 转换回字节数组。

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

不过这些都不是好方法。 第一个想法是消耗更多的 memory 然后它需要,如果你仔细想想,第二种方法有点荒谬。 使用数据库要好得多。 您可以使用MySQL等数据库,该数据库将与 Windows 和 Mono 一起使用。 您还可以使用SQLite 数据库,以便该数据库是可移植的。 确实没有充分的理由将其存储在数据库中。

我会在我的线路上使用 go:您可以使用任何提供安全加密的Mono ZIP库来保存在磁盘上。

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

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

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

Microsoft使用这种“技术”,例如DOCX文件。 尝试将 DOCX 文件的扩展名更改为 ZIP 并将其解压缩到文件夹中。 你会看到内容。

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM