Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: SERBice en 16 Mayo 2008, 12:45 pm



Título: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 12:45 pm
si yo abro un archivo determinado, en el cual tngo X cantidad de imagenes y se en qeu posicion esta cada una (cada archivo), leo una imagen (meto el archivo en un string).

la pregunta es ¿como hago uso de loadpicture() para cargar ese string? ¿hay un equivalente a loadpicture()?


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: seba123neo en 16 Mayo 2008, 13:08 pm
Hola,no entiendo cuando decis que abris un arhcivo con imagenes,¿que archivo contiene imagenes dentro?

saludos.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 13:14 pm
eso no importa.

ejemplo:

archivo "muchos.x", en ese archivo hay 3 archivos 1.jpg,2.jpg,3.jpg.

yo leo muchos.x y meto en un string 2.jpg.

yo necesito con loadpicture o alguna funcion equivalente poder cargar el archivo qeu tngo en la variable sin tener que escribir el archivo en disco (dado que podria escribir el archivo, leerlo y borrarlo, pro eso es una perdida de tiempo/rendimiento y no es correcto, debe haber una forma de cargarlo desde memoria, pero no la se)


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 14:41 pm
En una string?? Eso, ademas de no ser posible seria mala programacion.

Tienes 2 opciones:

Lo mas facil cargar tu archvo en un Buffer() (byte array), separarlo en imagenes y crear los archivos en disco. Luego puedes usar LoadPicture.

Lo mas dificil seria usar la estructura BITMAP, cargar cada buffer de cada imagen en esa estructura y despues crear un hDC y cargarlo en la picturebox.

http://msdn.microsoft.com/en-us/library/ms532298(VS.85).aspx

Saludos


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 15:01 pm
pus, lo de 3 imagenes era un ejemplo, estamos hablando de cerca de 2000 objetos (imagenes), quizas más y el "desempaquetar" y grabar en disco para luego borrarlo es una tarea que demanda demasiado tiempo.

otra inquietud: en caso de guardar cada archivo en disco (cuando sea necesario usarlo, caso contrario estarán en un String Array -Archivo(3) as string-), como se cuando ya se ha cargado para borrarlo. ¿LoadPicture no devuelve el foco hasta qe se carga o debo hacer alguna comprobacion para no borrarlo mientras LoadPicture lo est usando?


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 15:07 pm
pus, lo de 3 imagenes era un ejemplo, estamos hablando de cerca de 2000 objetos (imagenes), quizas más y el "desempaquetar" y grabar en disco para luego borrarlo es una tarea que demanda demasiado tiempo.

otra inquietud: en caso de guardar cada archivo en disco (cuando sea necesario usarlo, caso contrario estarán en un String Array -Archivo(3) as string-), como se cuando ya se ha cargado para borrarlo. ¿LoadPicture no devuelve el foco hasta qe se carga o debo hacer alguna comprobacion para no borrarlo mientras LoadPicture lo est usando?

Mas una vez, usa byte array, string array es feo (para no entrar en detalles) xD

Simplemente hace LoadPicture y en seguida DeleteFile (o Kill en vb...).

Espera, kieres hacer un captcha breaker? Si es asi tengo un metodo k te se aplica mejor k cargar imagenes.

Saludos


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 15:13 pm
array byts, vale, eso me da lo mismo, no me importa (hare lo que sea mejor llegado el caso, aqui trato de averiguar la carga de imagenes contenidas en variables).

lo que se quiere hacer es "empaquetar" en un solo archivo imagenes de un video juego para que el usuario no las modifique.

Por el motivo del rendimiento escritura/lectura en disco (dado q son muchos archvos y se cnosultan bastante seguido) y por el motivo de "seguridad" (no quro qeu el usuario vea que se estan creando los graficos en disco para usarse) es que deseo cargar desde memoria luego de "desempaquetar/descifrar" el archivo en cuestion en la misma.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 15:15 pm
array byts, vale, eso me da lo mismo, no me importa (hare lo que sea mejor llegado el caso, aqui trato de averiguar la carga de imagenes contenidas en variables).

lo que se quiere hacer es "empaquetar" en un solo archivo imagenes de un video juego para que el usuario no las modifique.

Por el motivo del rendimiento escritura/lectura en disco (dado q son muchos archvos y se cnosultan bastante seguido) y por el motivo de "seguridad" (no quro qeu el usuario vea que se estan creando los graficos en disco para usarse) es que deseo cargar desde memoria luego de "desempaquetar/descifrar" el archivo en cuestion en la misma.

En ese caso, no los estraeas al disco, usa las estruturas bitmap.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 15:21 pm
aja... claro claro...

pero no se como hacerlo, por eso pregunto.

no pido que me hagan las cosas, pero un ejemplo se agradeceria mucho.

desde ya muchas gracias por tu tiempo.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 15:29 pm
aja... claro claro...

pero no se como hacerlo, por eso pregunto.

no pido que me hagan las cosas, pero un ejemplo se agradeceria mucho.

desde ya muchas gracias por tu tiempo.

Pues yo tampoco se como hacerlo pork nunca lo hice. Pero como dice es cuestion de usar conceptos de programacion y leer la MSDN acerca de las estruturas bitmap y apis para manejar bitmaps. Kualkier uno k sepa los conceptos y sepa leer, puede hacerlo.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: LeandroA en 16 Mayo 2008, 16:53 pm
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


Código:
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


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 16:59 pm
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.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: 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


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: cobein en 16 Mayo 2008, 17:13 pm
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.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: LeandroA en 16 Mayo 2008, 17:16 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


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 17:18 pm
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


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: 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 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=29004&lngWId=1)

saludos.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: cobein en 16 Mayo 2008, 17:50 pm
Aca arme un ejemplo, soporta la mayoria de los formatos de imagenes

http://www.uploadsourcecode.com.ar/d/HRxtUbwXhP6qJDHwlNddiUUMPQbzYpx3

espero que sea util.


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 16 Mayo 2008, 18:11 pm
bueno ya te pusieron,pero mira este ejemplo,no es lo mejor,pero bue...

 Load JPG, GIF, or BMP from Byte Array (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=29004&lngWId=1)

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?


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: cobein en 16 Mayo 2008, 18:21 pm
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


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: Tughack en 16 Mayo 2008, 19:28 pm
Pues el ejemplo k te ha servido trata exactamente de lo k te dice yo. Podrias haber intentado hacerlo tu mismo, ganarias experiencia...


Título: Re: loadpicture de variable con contenido del archivo ¿como?
Publicado por: SERBice en 25 Mayo 2008, 23:10 pm
gente, relacionado con el tema que se trato en este therad, tengo dos inquietudes:

1: se puede hacer esto mismo con archivos de audio?
2: hay alguna forma de codificar los archivos contenidos en "el archivo padre" para qu no puedan ser extraidos y visualizados tan facilmente por "mirones".... sobrtodo me interesa que sea rapida la decodificacion a la hora de utilizar los graficos.