C#:将图像保存到DB中

时间:2011-04-27 14:56:57

标签: c# database image image-processing varbinarymax

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

谢谢!

5 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

那没关系。但是,如果这些图像太大而且您的DBA可能不再喜欢oyu将它们放在那里,您可以将它们放在某处的驱动器上并将该位置存储在DB中。

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

我刚给你一个替代方案。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您使用的图片格式和数据库技术是什么?

一种选择是将图像转换为二进制数组并将其推送到数据库。我在codeproject上找到了一些很好的代码来解决这个问题:

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

答案 4 :(得分:0)

就像Magnus所说,FileStreams不存储在DB的页面中,所以它不会影响性能。

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

其他人提到只存储网址。这也是一个好主意,可能是最简单设置的最佳人选。