为什么用 GdipCreateBitmapFromStream 取数据库里的图片VB会挂掉?
WinXP
VB6+SP6
access 数据库
-------------------------------------------------
我希望将数据库中的图片直接显示处理
Dim ADO_Stream As new ADODB.stream
ADO_Stream.type = adTypeBinary
ADO_Stream.Open
Call ADO_Stream.Write(rst.Fields("Photo").value)
'## Call Stream.LoadFromFile(strFileName)
Dim GH As Long
Dim BH As Long
Dim bmW As Long
Dim bmH As Long
GdipCreateFromHDC Me.hDC, GH
GdipCreateBitmapFromStream ADO_Stream, BH 到这里VB直接挂掉 Why ???
GdipGetImageWidth BH, bmW
GdipGetImageHeight BH, bmH
GdipDrawImageRectI GH, BH, 0, 0, bmW, bmH
------------------------------------------
Public Declare Function GdipLoadImageFromStream Lib "GdiPlus" (ByVal stream As Any, Image As Long) As GpStatus
[解决办法]
应该跟GdipLoadImageFromStream无关,将流保存到磁盘试试能不能打开由流生成的图片文件。
[解决办法]
所谓的流其实就是字节数组,你使用二进制方式打开文件,然后把图片数据放到字节数组,再调用GdipCreateBitmapFromStream试试。
[解决办法]
这两个流是两码事,楼主不分东西啊。
要这样用的:
dim StreamObject As IUnknown '或 Istream
Call CreateStreamOnHGlobal(b(0), False, StreamObject)
Call GdipLoadImageFromStream(StreamObject, img)
其中b() 中包括的就是你的整个图片文件内容。
[解决办法]
楼上解答应该是正确的,楼主不妨试一下。
[解决办法]
http://download.csdn.net/source/1483930