如何存储图片不使用的资源
本文关键字:资源 何存储 存储 | 更新日期: 2023-09-27 18:02:22
我有一个c#应用程序,我需要保持在她的图片,但我不能使用资源(resx)。那么有没有别的方法呢?
更新:答:我的图片是静态的,为此我将使用嵌入式资源
如何创建嵌入式资源
如上所述,这实际上取决于它们是静态的还是动态的。如果是静态的,您可以使用嵌入式资源(而不是像其他人提到的那样将它们编码为常量字节数组)。如果是动态的,则可以将它们存储在独立的存储中。
这是一组动态图片还是静态图片?如果是静态的,则可以将资源文件编译为单独的程序集,然后使用它。如果是动态的,则需要某种类型的数据存储来存储文件。如果文件系统不能工作,可以选择数据库
我想到了一个想法,但如果可能的话我可能不会使用它:将图像作为字节数组放入代码中。
您可以为图像创建byte[]
字段并在代码中初始化它们。您可以使用CodeDOM或Reflection.Emit动态生成代码。
如果图片不是太大,你可以在代码中将它们编码成巨大的常量数组。这不是一个很好的解决方案,但如果没有文件,没有资源,没有数据库呢?
考虑到你给我们的选择,我们没有多少可做的了。根据图像大小,您可以使用此网站将图像编码为Base64,然后将它们存储在string
中。然后你可以使用System.Convert.FromBase64String
将它们从base64转换回字节数组。
另一种选择是将图像存储在web服务器上,并在服务器上创建一个web服务,您可以使用该服务来检索图像。
这些都不是好方法。第一种方法消耗了比实际需要更多的内存,如果你仔细想想,第二种方法有点荒谬。使用数据库要好得多。你可以使用MySQL这样的数据库,它可以同时在Windows和Mono上工作。您还可以使用SQLite数据库,这样数据库是可移植的。把它存储在数据库中实在没有什么好理由。
我会继续我的路线:您可以通过使用任何提供安全加密的Mono ZIP库在磁盘上保存。
Zip:因为您可能会节省空间
加密:如果你需要保存一些私人数据(家庭照片,文档…)
可以根据你自己的应用逻辑对它们进行分组,或者单独保存它们,如果你还需要提供一些关于图像的信息,还可以附加一些元文件。
Microsoft使用这种"技术",例如DOCX文件。尝试将DOCX文件的扩展名更改为ZIP并将其解压缩到文件夹中。您将看到内容。
问候。