Programación General > Visual Basic 6.0 e inferiores
Leer Pixeles Directo Del Archivo De Imagen
hzamorac:
Saludos, soy nuevo en este foro espero puedan ayudarme.
Estoy haciendo una aplicación en vb6, en la cual leo ciertos pixeles de una imagen los cuales ya tengo identificados por coordenadas, comenzé haciendolo con getpixel y setpixel, pero ya saben, por la necesidad de más velocidad preferí usar GetDIBits y SetDIBits, el problema es el siguiente:
Tengo un picturebox que es de un tamaño específico, no puede cambiar su tamaño, la imagen que voy a leer la cargo a este picturebox, pero es más grande (en alto y ancho), cuando leo con GetDIBits y trato de copiarlos a otro picturebox con SetDIBits solo se copian los valores de la parte de la imagen que se ve en el picturebox y no de toda la imagen cargada.
No entiendo muy bien el GetDIBits, estoy usando como base otro programa que convierte a escala de grises, este programa maneja todo respecto al picturebox imagino que por esto es por lo que solo copia los pixeles visibles. El programa esta en:
www.vb-helper.com/howto_make_gray.html
Alguna idea de como leer los pixeles de una imagen sin tener que mostrarla toda en el picturebox? se acepta cualquier forma de hacerlo (aunque de preferencia leerla desde el archivo directamente jeje).
Muchas gracias espero haber sido claro y que me puedan ayudar con esto.
albertovicat:
Hola hzamorac.
No creo que te convenga tratar de leerlos desde el archivo, porque suelen ser medio complicados en la forma de guardar la información de cada punto de la imagen. Y si se trata de algún formato comprimido (como jpg) mucho más (no decís que formato de imagen es la que querés leer).
Tendrías que ponerte a estudiar cada uno en particular y escribir algún procedimiento o rutina para que lo decodifique.
Mi sugerencia es que hagas visible la imagen entera (por ejemplo con un control Image con la propiedad Strecht = True, en vez de un PictureBox) y obtengas la información desde pantalla.
¡Suerte, y que tengas un buen 2007!
hzamorac:
De hecho eso es lo que hago, muestro la imagen completa, pero en un picture box, el problema que tengo es que la imagen es muy grande y no alcanza a mostrarse toda en monitores con resolución de 800x600.
No se si usando un Image para que se ajuste a la imagen, aunque no se vea completo por las cuestiones de la resolución, pueda tomar todos los datos, aun de la parte que no se ve.
Sólo manejo un tipo de archivo, el bmp, por eso talvez me sirva leerlo desde el archivo ya que solo haria una rutina.
Bueno seguiremos investigando.
Gracias por la respuesta y Feliz año para ti tmb.
Epa:
Buenas .
Sinceramente no se de donde es la funcion GetDIBits, aunque me paso algo similar. El problema es que mucha de estas funciones copian el el color directamente del monitor ( o sea de la memoria de imagen) por lo que si el pixel esta tapado o fuera del minitor no tomara bien el color.
Las dos opciones q tienes (creo, quisas hay mas) son leer directamente del fichero o de la memoria, cosa q no creo q sea sencillo en VB, investiga quisas con punteros puedas /ya q los punteros de vb son bastante limitados).
Espero te sirva, saludos.
Epa:
:whistling:
me parece q no lei bien el post.
El archivo BMP tiene 4 partes:
1-cabecera de archivo
2-cabecera de bitmap
3-tabla de colores
4-bytes de imagen
los datos de las cabeceras son:
--- Código: Text --- Bytes Informacion0-1 Letras BM2-5 Tamaño del archivo6-9 Reservado10-13 Datos de imagen14-17 Tamaño de la cabezera de bitmar18-21 Anchura22-25 Altura26-27 Numero de planos28-29 Tamaño de cada punto30-33 Compresion34-37 Tamaño de la imagen38-41 Resolucion horizontal42-45 Resolucion Vertical46-49 Tamaño de la tabla de colores50-53 Contador de colores importantes
para recuperar del archivo necesita recuperar datos como ancho y alto, resolucion, compresion y otras cosas, para poder interpretar bien los datos de la imagen. a menos q ya lo sepas y recuperes directamente la imagen. cuando abres el archivo te mueves a la posicion 53 + tamaño de la tabla de colores y tendras los bytes de imagen.
Saludos
Navegación
[#] Página Siguiente
Ir a la versión completa