Visual Basic - Bitmap en archivo binario

Life is soft - evento anual de software empresarial
 
Vista:

Bitmap en archivo binario

Publicado por Christian Serrano (3 intervenciones) el 16/02/2006 04:59:37
Tengo un archivo binario donde hay un bmp, lo coloco en una matriz de tipo byte y necesito ponerlo en un PictureBox pero sin copiarlo al disco, como un archivo, solo desde la memoria, estuve viendo algo con: CreateDIBSection pero no termino de comprender. Si alguien sabe, que me ayude...
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

RE:Bitmap en archivo binario

Publicado por Juan_K (181 intervenciones) el 16/02/2006 16:52:23
Por q no usa "LoadPicture" para cargar la imagen desde el archivo binario ??

Bueno igual te mando una funcion con la q podras hacerlo, pero tienes q bajarte un archivo de esta direccion
http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip
el Zip contiene varios archivo pero solo necesitas el "olelib.tlb" descomprimelo y crea una referencia a el en tu proyecto

Private Function LoadImage(ImageBytes() As Byte) As StdPicture
Dim oPersist As IPersistStream
Dim oStream As IStream
Dim lSize As Long

lSize = UBound(ImageBytes) - LBound(ImageBytes) + 1

Set oStream = CreateStreamOnHGlobal(0, True)

oStream.Write &H746C&, 4&

oStream.Write lSize, 4&

oStream.Write ImageBytes(LBound(ImageBytes)), lSize

oStream.Seek 0, STREAM_SEEK_SET

Set LoadImage = New StdPicture

Set oPersist = LoadImage

oPersist.Load oStream

Set oStream = Nothing
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bitmap en archivo binario

Publicado por Christian Serrano (3 intervenciones) el 17/02/2006 12:14:14
Muchas gracias, funciona perfecto. El tema es que la imagen se encuentra en un archivo binario junto con otros datos, pero con la funcion se puede extraer correctamente y colocarla un un PictureBox, ahora me podrias explicar que es la que hace la funcion??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Bitmap en archivo binario

Publicado por Juan_K (181 intervenciones) el 17/02/2006 18:03:26
Aqui vamos ...

===================================================================
Dim oPersist As IPersistStream ' && nos sirve de enlace entre el objeto image (obj. devuelto por la funcion) y el objeto stream

Dim oStream As IStream '&& Para manejar los Bytes
Dim lSize As Long

' &&Calculamos tamaño del array
lSize = UBound(ImageBytes) - LBound(ImageBytes) + 1

' &&Crea un stream object
Set oStream = CreateStreamOnHGlobal(0, True)

' && escribe cabeceras del stream (&H746C& = PictureID)
oStream.Write &H746C&, 4&

' && escribe tamaño del array
oStream.Write lSize, 4&

' && escribe la data de la imagen
oStream.Write ImageBytes(LBound(ImageBytes)), lSize

' && Nos movemos al inicio del Stream (oPersist.Load cargara el stream desde la posion actual del puntero)
oStream.Seek 0, STREAM_SEEK_SET

'&& Creamos un objeto picture
Set LoadImage = New StdPicture

' && Obtenemos la interfaz IPersistStream
' &&del objeto picture
Set oPersist = LoadImage

' && Cargamos la imagen desde el Stream
oPersist.Load oStream

' && Liberamos el objeto Stream
Set oStream = Nothing

==================================================================
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar