【问题标题】:C# : Saving an Image into DBC#:将图像保存到数据库中
【发布时间】:2011-04-27 14:56:56
【问题描述】:

有人可以给我一些关于如何在 C# 中将图像文件保存到 DB 中的建议吗? 我将保存很多图像,所以减少空间的最佳方法是什么 它会需要吗? 我目前在 DB 中使用 varbinary(max) 字段。

谢谢!

【问题讨论】:

  • 使用什么类型的DB通讯? (Linq2SQL,Linq2Entity 可能)
  • 你通常如何将东西保存到你的sql server?

标签: c# database image image-processing varbinarymax


【解决方案1】:

如果您必须将实际文件存储在 SQL 中,那么请确保您对图像的大小进行了一些限制,并确保您正确规划了数据库的大小 - 您期望有多少张图像以及多大的大小?

如果您必须将其存储在 SQL 中,我的偏好是自动将其放在自己的 SQL 数据库中。这样,我在使用这些图像时遇到的任何性能问题都不会影响我的数据库的其余部分。

现在,如果您不必将图像存储在 SQL 数据库中,那么我认为这只是要求使用 Azure Blob 存储来完成。去看看吧 - 它会在一个非常高效的系统中为您提供您想要的。

如果你不能使用 Azure,那么你应该组合一个类来处理图像到文件系统的读/写/查找。保存到文件系统(正确完成)比保存到 SQL 效果更好。

【讨论】:

    【解决方案2】:

    这样就好了。但是,如果这些图像太大并且您的 DBA 可能不再喜欢 oyu 将它们放在那里,您可以将它们放在某个驱动器上并将位置存储在 DB 中。

    我想有很多方法可以解决这个问题。只是权衡你的利弊。

    我只是给了你一个选择。

    【讨论】:

      【解决方案3】:

      将图像存储在数据库中不是一个好主意。您可以将网址存储到图像。

      【讨论】:

      • 你打字比我快。是的,听听这个家伙。
      • 可以使用Filestream类型代替varbinary(max)
      【解决方案4】:

      图片是什么格式,你使用什么数据库技术?

      一种选择是将图像转换为二进制数组并将其推送到您的数据库。我在 codeproject 找到了一些关于如何完成此任务的好代码:

      http://www.codeproject.com/KB/aspnet/ImageInDatabase.aspx

      【讨论】:

        【解决方案5】:

        正如 Magnus 所说,FileStreams 不存储在 DB 的页面中,因此不会影响性能。

        虽然将文件存储在数据库中意味着您的数据库备份会变得更大。

        其他人提到只存储 URL。这也是一个好主意,并且可能是简单设置中性能最高的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-26
          • 2015-08-13
          • 2020-02-10
          • 2019-06-27
          相关资源
          最近更新 更多