2013-03-12 63 views
-3

我在C#.net 4.0中使用VS 2008创建一个asp.net应用程序& MS SQL Server 2008 R2。我想为每个订单上载图像(.bmp),并将其存储在与其订单相对应的数据库中。必须在功能请求视图时检索它。大容量图像存储在SQL Server 2008中

我的要求是存储图像并检索它。订单数量可能是每天约50个订单。随着人数的增加,这可能会超过开销。请建议我解决内存问题的有效方法。

+0

压缩图像?购买更大的硬盘? (你有什么问题?) – 2013-03-12 16:26:27

+0

你的帖子中没有提到的问题。有“请建议我有效的方法来克服内存问题”,但没有解释“内存问题”是什么。 SQL和W2K8R2 x64都可以毫不费力地处理相当大的文件......尤其是在每小时2次请求的计划负载下。 – 2013-03-12 16:43:18

回答

0

那么,您可以将它们作为varbinary(max)存储在数据库中,也可以将URL存储到文件中。如果您每天有50张图片,最好使用文件和网址方法。

两者都有优点和缺点。但正如你所说,你想要将它们存储在数据库中: 我认为数据库存储上的一个重要原因是,没有人可以随便登录并重命名/删除文件夹,或者混淆其中的文件。 数据库的另一个优点是您可以恢复数据库,而不必尝试保持文件夹保持同步。

您可以使用ImageConverter到字节数组之间转换为图像和背部

 var stream = new MemoryStream(); 
    var imageData = DataAccess.GetImageData(); //Returns a System.Linq.Binary for me 
    var imgageBinaryData = imageData.ImageData.ToArray(); //This returns a byte array 
    var img = Image.FromStream(stream);  //Here is your image ready for displaying 

然后回去像

 var stream = new MemoryStream(); 
    img.Save(stream,System.Drawing.Imaging.ImageFormat.Jpeg); 
    var myBytes = ms.ToArray(); 

编辑了一句:哦,它们存储为JPEG格式,而比Bmp节省了很多空间