Visual Basic - help!!! crear imagen desde la memoria

Life is soft - evento anual de software empresarial
 
Vista:

help!!! crear imagen desde la memoria

Publicado por Jorge Carlos (9 intervenciones) el 08/01/2006 17:11:57
Hola haber si alguien me puede ayudar.

Lo que intento hacer es leer un campo de mi base de datos que contiene una imagen para luego pasarlo a un objeto Picture sin tener que crear un archivo en el cpu si no desde un array de binario.
El punto es que la funcion no me devuelve la imagen. Si alguien me puede orientar sobre que estoy haciendo mal.

Con este codigo paso el bloque de bytes de mi campo a un array de bytes

Blocks = Int(rs.Fields(fldContieneImagen).ActualSize / nBUFFER)
LeftOver = rs.Fields(fldContieneImagen).ActualSize Mod nBUFFER

ReDim Data(Blocks * nBUFFER + LeftOver)

CopyMemory Data(1), rs.Fields(fldContieneImagen).Value, LeftOver + Blocks * nBUFFER
Set Pic1.Picture = PictureFromBits(Data)

Public Function PictureFromBits(abPic() As Byte) As IPicture
Dim nLow As Long
Dim cbMem As Long
Dim hMem As Long
Dim lpMem As Long
Dim IID_IPicture As GUID
Dim istm As stdole.IUnknown ' IStream
Dim ipic As IPicture


On Error GoTo Out
nLow = LBound(abPic)
On Error GoTo 0
cbMem = (UBound(abPic) - nLow) + 1


hMem = GlobalAlloc(GMEM_MOVEABLE, cbMem)
If hMem Then

lpMem = GlobalLock(hMem)
If lpMem Then

MoveMemory ByVal lpMem, abPic(nLow), cbMem
Call GlobalUnlock(hMem)

If (CreateStreamOnHGlobal(hMem, CTrue, istm) = S_OK) Then
If (CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture) = S_OK) Then
Call OleLoadPicture(ByVal ObjPtr(istm), cbMem, CFalse, IID_IPicture, PictureFromBits)
End If ' CLSIDFromString
End If ' CreateStreamOnHGlobal
End If ' lpMem
End If ' hMem

Out:

End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder