【问题标题】:How to store images do not use the resources如何存储图片不使用资源
【发布时间】:2011-07-18 21:02:22
【问题描述】:

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

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

How create embedded resource

【问题讨论】:

  • @ LarsTech,数据库 - 不,目录 - 现在如果你删除图片,它会产生不利影响。
  • @svick,通过单声道移植到 unix 的问题
  • 请向我们提供您应用的更多要求。有几十种方法可以做你想做的事,只是看看当前的问题。为什么不只保存在文件夹中(隐私问题)?是否可以拥有一个数据库并将它们像 BLOB 数据一样保存(例如 SQLIte)?可以将它们保存在文件夹中并像安全的 zip 文件一样压缩吗?...
  • DataBase - 我们不想使用数据库。
  • @simply,你不想吗?为什么?你有这样做的理由吗?

标签: c# image resources storage


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • "将资源文件编译为单独的程序集" - 怎么做? MonoDevelop 不能自动完成。
    • 确保 Mono 中有资源管理器:msdn.microsoft.com/en-us/library/…。只要它在那里,您就可以使用 csc.exe 来编译文件 (msdn.microsoft.com/en-us/library/ms379563(v=vs.80).aspx)。我必须检查是否有用于 .resx 的开源工具,或者您是否必须从 Visual Studio 或 Express SKU 开始设置 RESX 来编译它。您的 OP 中没有 Mono。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        这些都不是好方法。第一个想法比它需要消耗更多的内存,如果你仔细想想,第二种方法有点荒谬。使用数据库要好得多。您可以使用诸如MySQL 之类的数据库,它可以同时用于Windows 和Mono。您还可以使用SQLite database 以便数据库是可移植的。确实没有充分的理由将其存储在数据库中。

        【讨论】:

          【解决方案6】:

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

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

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

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

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

          问候。

          【讨论】:

            猜你喜欢
            • 2013-04-05
            • 1970-01-01
            • 1970-01-01
            • 2013-04-29
            • 2010-09-25
            • 1970-01-01
            • 2012-08-03
            • 2011-12-13
            • 1970-01-01
            相关资源
            最近更新 更多