亲爱的所有人,我在流数据库中遇到问题。
我已经在那里写了一个图像,现在我想回忆并将它放在PictureBox中。
有没有人可以告诉我最好的做法?
非常感谢您提前。从流数据库中读取图像
回答
IMO最简单的方法是从数据库中读取所有数据并将其写入MemoryStream
。快退流(设置Position=0
),然后使用new Bitmap(stream)
或Image.FromStream
。请注意,您应该而不是处置流...位图有效“拥有”流后,您已经构建它。
谢谢你,这是我的第一个想法,但我正在寻找比这更好的东西(如果有的话)。 – 2010-12-17 17:38:09
@Lefteris:你在寻找什么样的“更好”?你对这个解决方案有什么不喜欢的? – 2010-12-17 17:38:50
这不是我不喜欢的,但如果还有其他的东西。据我所知,这是最好的做法。非常感谢你。 – 2010-12-17 17:41:28
- 加州的
ExecuteNonQuery
方法来获取与图像的字节数组 - 创建字节数组围绕一个新
MemoryStream
(不破坏流作为Image对象将继续使用它) - 呼叫
Image.FromStream
读取流 - 将此图片设置为PictureBox的
Image
属性。
当图像很小或流量不重要时,上述任何一种方法都能正常工作,并且它们的分辨率很高。由于所有这些解决方案都要求将整个图像作为字节数组存储在内存中,所以随着图像大小的增加,事情开始变得无法控制。如果服务器上的负载很重要,那么将所有这些图像文件副本占用有价值的进程地址空间的空间会增加,并且会显着影响性能。
这是可能从流语义数据库读取,使没有该文件的完整副本都保存在内存中:
为DataReader提供一种处理 句柄的行,其中包含具有 较大二进制值的列。加载整行而不是 , SequentialAccess使 DataReader能够将数据加载为流。 然后,您可以使用GetBytes或 GetChars方法来指定开始读取操作的位置 位置,并且返回数据 的有限缓冲区大小。
- 在块读出的数据,使用
SqlDataReader.GetBytes
- 写数据到输出流中的块
最后一点是一个小问题。您可以将流写入虚拟映射到该站点的WWW服务器本地文件夹,然后将URL返回到该文件。或者你可以有一个URL来读取图片本身,并将图像直接写入ASP输出缓存。第一种方法可以为经常访问的映像付钱,因为缓存文件可以服务多个请求,但它需要失效和清理逻辑。第二种方法更适合于无消息访问的图像,但需要在应用程序中使用适当的路由逻辑。
当事情开始变得非常热时,在封送这些图像时线程被阻塞的问题开始出现,您将不得不移动到Asynchronous pages,这是一个适合流式复制语义的模型。
@Remus Rusanu。我尝试使用您的解决方案,但我面临一些问题。这是显而易见的,有些地方我错了。所以请协助我: – 2010-12-20 09:02:50
Dim readSQLcomm As SqlCommand。 Dim imgReader As SqlDataReader。 Dim imgBuffer()As Byte。昏暗的imgStream作为FileStream。 – 2010-12-20 09:04:10
readSQLcomm =新的SqlCommand(“SELECT”&tName&“_Image WHERE”&tName&“Parent_ID ='”&imgID&“'”,SQLConn) – 2010-12-20 09:04:31
- 1. 从数据库中读取FOP图像
- 2. 从数据库中读取图像并在视图中显示
- 3. 从数据库读取图像或向数据库写入图像
- 4. 如何从流明API中的数据库中获取图像?
- 5. 从PDF中的图像读取数据
- 6. 从数据库中显示图像。获取net.sf.jasperreports.engine.JRException:图像读取失败
- 7. 问题在iphone从数据库中读取图像
- 8. Android从数据库中读取图像名称
- 9. 如何从数据库中读取图像
- 10. 从数据库中获取的图像
- 11. 从数据库中获取图像
- 12. 从数据库中获取图像android
- 13. MongoDB从数据库中读取数据
- 14. 从数据库中读取MVC数据
- 15. 如何从数据流读取数据
- 16. 从网址读取图像元数据
- 17. 从红宝石流中读取数据
- 18. nodejs读取图像数据
- 19. 如何从sql server数据库中读取图像数据的内容
- 20. 从SD卡读取图像(jpeg)文件与SQLite数据库
- 21. asp.net从数据库读取图像并输出
- 22. 如何使用PHP从MySQL数据库读取图像?
- 23. 使用C#从数据库读取图像?
- 24. C#:使用存储过程从数据库读取图像
- 25. 从.NET中的图像文件中读取像素数据
- 26. Ajax从数据库读取
- 27. PDO从数据库读取
- 28. 任何方式来从数据库获取流式读取?
- 29. 如何从ios图像库的图像中获取数据?
- 30. 获取图像从数据库
是否有任何理由不让图像保存在FileSystem中并将元数据保存在dbase中?使用'FileSystem'更容易 – Xaqron 2010-12-17 17:48:16