【问题标题】:Storing an image file in an object (without needing the file afterwards)将图像文件存储在对象中(之后不需要该文件)
【发布时间】:2012-02-18 01:25:43
【问题描述】:

我到处寻找,但似乎找不到解决这个问题的方法。

我正在制作一个个人应用程序来存储信息,我希望在 DB 文件中存储的内容之一是每个条目的缩略图。我已经从文件中加载了图片,但我希望能够保存数据库而不需要文件在之后物理存在。换句话说,我希望将图像变量与其文件分开,但仍将图像数据保留在该变量中。

我真的没有要发布的 sn-p,因为我不确定如何解决这个问题。任何帮助将不胜感激!我正在使用图片框来加载图像,并在我的对象中有一个图像变量,但是当我将文件存储在该图像中时,它仍然需要 .jpg 是我从中选择它的位置...

编辑:我应该更具体地说,我没有使用 SQL 或类似的东西,我只是将用于将我的数据库存储到文件中的对象序列化。我想我在更一般的意义上使用“db”......

谢谢!

【问题讨论】:

    标签: c# image serialization storage


    【解决方案1】:

    您可以尝试以下方法之一:

    1. 使用 WPF 和 System.Windows.Media.Imaging 命名空间
    2. 将 COM 互操作与 WIC 接口结合使用(请参阅 http://code.msdn.microsoft.com/wictools 了解 WicCop,其中包含 C# 的所有 API 的导出)。
    3. 如果您想做一些基本的事情,例如从磁盘读取图像并将其写入另一个流以保存在数据库中,System.Drawing.Image 类也会对您有所帮助。

    【讨论】:

    • 所以,如果我将它序列化为一个文件,就像我通常对我的其他对象集合所做的那样(使用流和 bformatter),当我反序列化对象时,它不需要该文件我最初从哪里加载它?
    • 不确定您指的是哪个 API,但通常“是”不应该 - 假设您通过使用“使用”或在文件流中显式调用 .Close() 关闭了文件句柄.
    【解决方案2】:

    这将取决于您使用的数据库类型,但是...

    如果您使用的是 Microsoft SQL Server,并且文件大小不超过最大值(2 gig),那么我会使用VarBinary(max)

    然后您只需将字节读回图像源。 Telerik 有一个很酷的binary image control,它只允许你向它抛出原始二进制数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      相关资源
      最近更新 更多