Manipulacion de BMP

Iniciado por Gorky, 15 Octubre 2007, 16:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Gorky

Buenas foreros. A ver si me podeis echar una mano.
Me he estado informando sobre la estructura de una imagen BMP y por el momento lo que se es que esta compuesto por unos bits iniciales que contienen informacion como el peso, las dimensiones etc. y tras eso una matriz donde se indica el color de cada pixel.
Con todo esto quisiera saber como leer una imagen y guardar el valor de los pixeles dentro de una variable para una posterior edicio de ese valor.
Si ademas de esto que pregunto sabe alguien algo mas sobre manipulacion de BMP estaria muy agradecido.

Timerlux

Puedes explicar un poco que es lo que quieres, que es lo que quieres hacer

Hendrix

mmmmm....Esteganografia??? :rolleyes:

Bueno, te dire que si abres un BMP en blanco te sale todo lleno de F's, y si lo dejas en negro te sale todo 0's, eso son los Pixels en formato hexa, intenta hacer pruebas para saber si FF es un pixel o si es FFFF, supongo que es la primera, pero pruebalo.

Luego que quieres hacer?? cambiarlo para "esconder un mensage" o pintarlo en un picturebox??

Un Saludo  :)
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Hendrix

#3
Haciendo pruebas ya se como va.....mira, coge un bmp todo negro, y ve metiendo FF's, veras que empieza desde abajo, de izquierda a derecha y asi subiendo al llegar al final, aunque me lio, porque meti unas cuantas y al principio es rojo, al final es azul y en medio todo blanco (ya quedamos que FF era blanco)....ve haciendo pruebas, haber si encuentras algo, yo de momento te intentare buscar algo de info sobre este formato  :)

Editado:

Ya encontre algo, trabajan en grupos de 3 (FF FF FF), eso equivale a blanco  ;D Y ya se porque lo del azul y el rojo, porque el BMP se leia asi: (00 00 FF ) y eso es rojo  ;D

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Ferсhu

CitarYa encontre algo, trabajan en grupos de 3 (FF FF FF), eso equivale a blanco  grin Y ya se porque lo del azul y el rojo, porque el BMP se leia asi: (00 00 FF ) y eso es rojo  grin


Solo si son de 24 bits. Es azul verde rojo, y el numero determina la intencidad.

Gorky

Contesto a todos. Lo que voy buscando es practicar la esteganografia. Para ello necesito abrir el bmp y leerlo pixel por pixel. Tal y como explica Hendrix, los BMP estan en formato RGB, es decir, la union de tres valores que determinan la intensidad de cada color (rojo, verde, azul). Practicamente las aportaciones que habeis hecho las conocia ya. De todas maneras las agradezco. En lo que estoy interesado principalmente es en saber como poder leer esos valores desde VB.
Gracias de nuevo.

Hendrix

Hay codigo en PsCode, pero supongo que no los querras, preguntale a Thor como hizo su programa esteganografico, a mi tambien me dio por hacer un prgorama asi y se lo pregunte, aunque no recuerdo la respuesta... :-\ :-\

Con lo que te dije y con esto creo que podras hacerlo:

http://easybmp.sourceforge.net/steganography.html

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Gorky

Hendriҳ te agradezco el codigo que me ofreces. Leyendolo se entiende las lecturas que hace de la estructura y como va tomando de la cabecera los valores que necesita.
Mas o menos entiendo como hace la lectura de los bits de colores pero sigo sin saber hacerlo en VB.
Ahora voy a hacer una pregunta mas concreta: Si leo el BMP en modo binario que me va a leer por cada valor? Un bit? Un numero hexadecimal? O que es lo que lee?
Muchas gracias.

Timerlux

Yo de steganografia no controlo, pense que tal vez querias enviar Bitmaps por Winsock.

Suerte

Ferсhu

CitarLo que voy buscando es practicar la esteganografia. Para ello necesito abrir el bmp y leerlo pixel por pixel. Tal y como explica Hendrix, los BMP estan en formato RGB, es decir, la union de tres valores que determinan la intensidad de cada color (rojo, verde, azul). Practicamente las aportaciones que habeis hecho las conocia ya. De todas maneras las agradezco. En lo que estoy interesado principalmente es en saber como poder leer esos valores desde VB.
Gracias de nuevo.

Como leer pixeles del BMP en visual basic??

Simple, Abris un archivo BMP de forma binaria, lees los datos en forma de Byte, y solo usas los q estan despues de q termina la cabecera, osea dsp del byte Nº54, y de ahi de 3 en 3, por q cada 3 bytes forman un pixel de la foto, la suma de los 3 valores forma el color, y bueno luego haces lo q kieras con los datos. Si la foto es de una calidad menor a 24 bits y keres manipular colores vas a tener q usar operadores a nivel de Bits.

Espero q eso te sirva. Saludos!!