loadpicture de variable con contenido del archivo ¿como?

Iniciado por SERBice, 16 Mayo 2008, 12:45 PM

0 Miembros y 2 Visitantes están viendo este tema.

LeandroA

hola creo que lo que busca es esto

http://www.activevb.de/tipps/vb6tipps/tipp0556.html

Tughack ahora ya que esta el tema tengo una duda

hay diferencia en rendimiento de cargar un archivo a un string o un array ?

por ejemplo



Option Explicit

Private Sub Form_Load()

    Dim StrImagen As String
    Dim ArrImagen() As Byte
   
    '----------------- cargar a un string
    Open "C:\foto.bmp" For Binary As #1
        StrImagen = Space(LOF(1))
        Get #1, , StrImagen
    Close #1
   
    Debug.Print Len(StrImagen)
    '----------------- cargar a un array
    Open "C:\foto.bmp" For Binary As #1
        ReDim ArrImagen(LOF(1))
        Get #1, , ArrImagen
    Close #1
   
    Debug.Print UBound(ArrImagen)

End Sub



Yo mayormente estoy usando String ya que si tengo que buscar un valor/cadena lo hago con la funcion instr() pero si tuviera que buscarlo en un array pues tuviera que recorrer todo este y encontrar bits por bits y esto es lentisimo, o hay alguna forma mas eficiente para encontrar un conjunto de bits  en un array?


Saludos

SERBice

agradezco tu respuesta, pero eso ya lo tngo, lo qeu yo busco es una funcion equivalent a LoadPicture (que carga una imagen desde un archivo), pro que lo haga desde la variable que y le indico.

por otro lado, lo q dices de recorrer byte a byte.... tngo la misma duda, segun me han dicho se hace de forma eficient y sin comerse todo el micro con Colecciones creo, si no me equivoco, pero jamas logre hacerlo.

Tughack

Bueno depiende del uso. Yo creo k usar un Byte array es mas directo. Una string es Unicode... Voy intentar buscar algo k especifique alguna diferencia en el rendimento para darte una respuesta mas clara.

Saludos

cobein

#13
Si buscas aca en el foro el control que deje ucImagelist vas a ver que ese control tiene una funcion para cargar imagenes desde un byte array, es mas la manera de guardar las imagenes en el propertybag y cargarlas  de ese control es justamente lo que vos buscas.

Edit: Aca esta el link
http://foro.elhacker.net/programacion_vb/big_update_2203_png_image_and_imagelist_controls_source-t204651.0.html

Una aclaracion, utiliza gdi+ y si tu problema es asignar la imagen a un picturebox se puede no hay problema.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

LeandroA

#14
Cita de: Tughack en 16 Mayo 2008, 17:05 PM
Bueno depiende del uso. Yo creo k usar un Byte array es mas directo. Una string es Unicode... Voy intentar buscar algo k especifique alguna diferencia en el rendimento para darte una respuesta mas clara.

Saludos


recien hice unas pruevas con un archivo bien grande y si la diferencia es muy notable casi el doble de tiempo

igual me queda la duda si quisiera encontrar una marca en un array como haria? con copymemory ? , ni idea

Saludos

Tughack

Si, yo pienso k las strings son cargadas en byte arrays. Solo no estoy seguro. Mas tarde lo busco mejor k ahora me voy.

Saludos

seba123neo

bueno ya te pusieron,pero mira este ejemplo,no es lo mejor,pero bue...

Load JPG, GIF, or BMP from Byte Array

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

cobein

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

SERBice

#18
Cita de: seba123neo en 16 Mayo 2008, 17:19 PM
bueno ya te pusieron,pero mira este ejemplo,no es lo mejor,pero bue...

Load JPG, GIF, or BMP from Byte Array

saludos.

dado que solo necesito cargar JPG y BMP este ejemplo es perfecto para mi, con algunos ajustes me servirá, gracias.

duda: como hago un "array de array" (en php es $var[ x ][ y ]).... no se si me explico.
deseo hacer Archivos(id_archivo)(bytes)

EDIT: ¿Será más lento este metodo (cargar los archivos desde variables en memoria) que "desempaquetarlos", escribirlos en disco y leerlos?

cobein

Bueno, mejor que este resuelto.

Con respecto a la estructura podes:

utilizar un array de 2 dimensiones myArray(0 to bytes, 0 to imagenes)

la otra opcion seria usar un UDT

private type Mypics
    bytes() as byte
end type

private mypicsstruct() as mypics
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.