• Viernes 19 de Abril de 2024, 17:26

Autor Tema:  Formato Bmp  (Leído 58210 veces)

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Formato Bmp
« Respuesta #75 en: Jueves 13 de Julio de 2006, 19:35 »
0
Cita de: "JuanK"
enko, daniel y los demas  como van con su reto?
Sigo peléandome con wxWidgets  :kicking: (es la primera vez que voy a hacer algo con GUI :P), de este fin de semana no pasa  :comp:.

Si no, pues mando lo que tengo ya con Allegro  :smartass:.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Formato Bmp
« Respuesta #76 en: Jueves 13 de Julio de 2006, 21:06 »
0
A mi me falta hacer el leeme.txt y acomodar un poco la gui.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #77 en: Jueves 13 de Julio de 2006, 21:12 »
0
Cita de: "Enko"
A mi me falta hacer el leeme.txt y acomodar un poco la gui.
oops  :blink:

Tambien me falta el leame.  :o
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Formato Bmp
« Respuesta #78 en: Jueves 13 de Julio de 2006, 21:31 »
0
Cita de: "JuanK"
Cita de: "Enko"
A mi me falta hacer el leeme.txt y acomodar un poco la gui.
oops  :blink:

Tambien me falta el leame.  :o
APA  :rolleyes:

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Formato Bmp
« Respuesta #79 en: Jueves 13 de Julio de 2006, 21:35 »
0
No hay prisa .... terminen tranquilamente  :comp:

Yo el fin de semana intentare solucionar el problema de que salgan torcidas las imagenes, con las indicaciones que han dado en los anteriores posts , tengo suficiente documentacion  :lol: ( en las paginas en las que me documente sobre la estructura de un bmp24 no decian nada). Pero vamos que el que vale para el reto es el que mande ...., ya mas tarde subire la version corregida

Con el tiempo a lo mejor me animo a meterle la posibilidad de cargar otros bmps (8, 16 bits), si no hace juank antes un reto sobre elló,(desocupado que es uno  ;) )

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #80 en: Jueves 13 de Julio de 2006, 21:43 »
0
bueno, en todo caso es totalmente valido que envien el reto de nuevo con las correcciones que le hayan hecho, no importa.

Y si ya tengo planeado otro reto, he pensado lo de los bmp de 8 o 16 bits, pero quiero meterle un poco mas de emocion... despues les cuento. :devil:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Danielo

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Formato Bmp
« Respuesta #81 en: Jueves 13 de Julio de 2006, 23:33 »
0
Citar
enko, daniel y los demas como van con su reto?

Antes de nada, gracias a todos por la celeridad de la respuesta a mis dudas.

Al igual que Geo, tambien estoy con el GUI, y me esta costando un poco debido a que esta es la primera vez que tengo que hacer un programa con ventanas con C++ (cosa que me entusiasma), estoy intentando con las Win API que es algo nuevo para mi y tengo un montón de dudas, pero antes de hacer preguntas quisiera experimentar un poco más por mi mismo  :comp:
Recuerda siempre que eres único... Exactamente igual que todos los demás.
No existen frases de seis palabras.
Seamos realistas. Busquemos lo imposible.
Lo difícil tarda un poco en resolverse, lo imposible un poco más.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Formato Bmp
« Respuesta #82 en: Viernes 14 de Julio de 2006, 01:21 »
0
Cita de: "Danielo"
Citar
enko, daniel y los demas como van con su reto?

Antes de nada, gracias a todos por la celeridad de la respuesta a mis dudas.

Al igual que Geo, tambien estoy con el GUI, y me esta costando un poco debido a que esta es la primera vez que tengo que hacer un programa con ventanas con C++ (cosa que me entusiasma), estoy intentando con las Win API que es algo nuevo para mi y tengo un montón de dudas, pero antes de hacer preguntas quisiera experimentar un poco más por mi mismo  :comp:
usar GDI es suicidio :scream:
No, es broma, tan dificil.

Danielo

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Formato Bmp
« Respuesta #83 en: Viernes 14 de Julio de 2006, 03:51 »
0
Citar
usar GDI es suicidio scream.gif
No, es broma, tan dificil.
Si, es un suicidio :( , de alguna manera ya lo había captado tal vez de forma subliminal mientras buscaba info en internet :scream:

Hasta ahora no encuentro nada parecido al (maravilloso) putpixel(x,y,color) de Borland para DOS, que exista en GDI, solo encuentro cosas como LoadImage y LoadBitmap que por lo visto cargan el bitmap automagicamente y no a partir de una matriz de bits...

...y ya estoy empezando a dudar que exista algo como putpixel  :( tampoco estoy seguro de estar cargando correctamente el mapa de bits ya que no tengo forma de mostrarlo en pantalla, asi que si alguien me da algún consejo le estaré muy agradecido  :rolleyes:
Recuerda siempre que eres único... Exactamente igual que todos los demás.
No existen frases de seis palabras.
Seamos realistas. Busquemos lo imposible.
Lo difícil tarda un poco en resolverse, lo imposible un poco más.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #84 en: Viernes 14 de Julio de 2006, 04:40 »
0
averigua en gdi acerca de lock bytes  :smartass:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Formato Bmp
« Respuesta #85 en: Viernes 14 de Julio de 2006, 13:46 »
0
Cita de: "JuanK"
averigua en gdi acerca de lock bytes  :smartass:
http://winapi.conclase.net/

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Formato Bmp
« Respuesta #86 en: Viernes 14 de Julio de 2006, 17:50 »
0
¡Ya casi! Ya tengo la ventana con wxWidgets y puedo abrir un bitmap mostrándolo en la misma, ahora a rechecar el código de apertura de la imagen pues me ha dado problemas con algunos mapas de bits, aunque la razón no la encuentro :blink:.

Para mostrar la imagen, cargo los datos del bitmap, luego los copio a una wxImage mediante su función miembro SetRGB( x, y, r, g, b ) (sería como un putpixel), y esta la paso a la ventana, la cual la convierte a un wxBitmap y la dibuja usando un wxPaintDC, espero que sea válido para lo del reto :P.

No la convierto directamente a wxBitmap pues el formato de esta clase (según la documentación) es dependiente de la plataforma (y el chiste de usar wxWidgets es que la aplicación sea multiplataforma :P), luego uso la función DrawBitmap de wxPaintDC que sería como hacer el blit :P.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Formato Bmp
« Respuesta #87 en: Viernes 14 de Julio de 2006, 17:58 »
0
Cita de: "Geo"
¡Ya casi! Ya tengo la ventana con wxWidgets y puedo abrir un bitmap mostrándolo en la misma, ahora a rechecar el código de apertura de la imagen pues me ha dado problemas con algunos mapas de bits, aunque la razón no la encuentro :P.

Para mostrar la imagen, cargo los datos del bitmap, luego los copio a una wxImage mediante su función miembro SetRGB( x, y, r, g, B) (sería como un putpixel), y esta la paso a la ventana, la cual la convierte a un wxBitmap y la dibuja usando un wxPaintDC, espero que sea válido para lo del reto :P.

No la convierto directamente a wxBitmap pues el formato de esta clase (según la documentación) es dependiente de la plataforma (y el chiste de usar wxWidgets es que la aplicación sea multiplataforma :P), luego uso la función DrawBitmap de wxPaintDC que sería como hacer el blit :P.

Saludos,
JJ (Geo).
Hago algo parecido Usando Un TBitmap. Es decir una vez cargada la imagen en una matriz dinamica, la dibujo sobre un TBitmap de Delphi y lo vuelco en la pantalla.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Formato Bmp
« Respuesta #88 en: Viernes 14 de Julio de 2006, 19:47 »
0
Por ahora dejo sin "invertir" el bitmap para mostrarlo (o sea, está "de cabeza" :P), pero tengo problemas para cargar la imagen que subió Enko, no así con la que subió JuanK.

No he podido cargar correctamente la de Enko, los colores no se muestran correctamente y, en varias ocasiones, el programa falla y se cierra (lo raro es, no es siempre :blink:).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #89 en: Viernes 14 de Julio de 2006, 20:32 »
0
A mi la de enko me abre ok.

Geo, creo que se te esta reventando por memoria, revisa como pides memoria para el bitmap y ten en cuenta que no te debes confundir con eso del padding.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Formato Bmp
« Respuesta #90 en: Sábado 15 de Julio de 2006, 17:44 »
0
Ya lo corregí, el problema era un par de errores "de dedo" en la parte del padding, pensé que todo allí estaba correcto pues algunas imágenes las cargaba sin problemas :P.

Funciona perfecto en Linux, pero tratando de compilar con VC++ Express nuevamente salen mal algunas imágenes, estoy seguro que es por la "alineación" y tamaño de algunos tipos de datos, ahorita voy a probar con MinGW (Dev-C++).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Formato Bmp
« Respuesta #91 en: Sábado 15 de Julio de 2006, 21:30 »
0
Muy bueno tu programa Juank, he estado mirando tu codigo y he aprendido algunos truquillos como el de la transparencia del formulario que queda muy bien  :)  . Y el manejo de excepciones que haces, como habras visto yo no hago ningun try catch  ;)  , la falta de costumbre sera , la libreria dll,etc,etc , bueno ya se nota quien es el profesional   :D
La unica pega que he visto es cuando vuelve el foco al formulario principal, despues de seleccionar la imagen con el dialogo, las partes del formulario principal que tapaba el filedialog no se repintan y se quedan en negro, sera cuestion de hacerle un invalidate al form principal ....   :hola:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #92 en: Sábado 15 de Julio de 2006, 21:40 »
0
:lol:  jejeje gracias por los comentarios!!! :lol:  

Lo de profesional es inmerecido :S realmente estoy hasta ahora aprendiendo de C# 3.0 en el visual 2005 ya antes manejaba el 2003 pero muy poco de windows forms, solo directX y modo consola nada profundo... recien hace unos meses estoy profundizando para tratar de obtener una certificacion microsoft de aca a un año Dios mediante.

Lo de el invalidate  :ouch:  , de hecho lo tenia ahi pero lo removi porque crei que no era necesario, no habia fijado luego del bug que me decias, aunque ya lo vi... :losiento:

Aun estoy afinando la documentacion, pues he tenido problemas con el ndoc para .net framework 2.0.  :scream:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Danielo

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: Formato Bmp
« Respuesta #93 en: Sábado 15 de Julio de 2006, 22:38 »
0
Citar
verigua en gdi acerca de lock bytes
No encontré mucho sobre lock bytes, pero por lo poco que vi y entendí  :(  me parece que  :think:  ¿es para trabajar con DirectX?

Citar
http://winapi.conclase.net/
Excelente página!!!... es con la que vengo aprendiendo desde el principio del reto ya que está todo muy bien explicado.

Y ya encontré una función similar a PutPixel  :jumpie: , en GDI se llama SetPixel y su sintaxis es:
Código: Text
  1. COLORREF SetPixel(
  2.     HDC hdc,          // manipulador a contexto de dispositivo
  3.     int X,            // coordenada x del pixel
  4.     int Y,            // coordenada y del pixel
  5.     COLORREF crColor  // color del pixel
  6.    );
  7.  

Aún no la he probado (falta de tiempo), pero creo que funcionará  :rolleyes:
Recuerda siempre que eres único... Exactamente igual que todos los demás.
No existen frases de seis palabras.
Seamos realistas. Busquemos lo imposible.
Lo difícil tarda un poco en resolverse, lo imposible un poco más.

inforsystem

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Formato Bmp
« Respuesta #94 en: Domingo 16 de Julio de 2006, 01:58 »
0
Hola a todos.
Soy el que escribio el codigo que interezó a muchos.Perdón por no responder antes.

Aqui les presento otro:

bitsize = (ancho_imagen * ((bpp + 7) / 8) * abs(alto_imagen);

Este codigo, como el otro ¿que solucionan?Como habran observado aquellas personas que les sucedia que la imagen de dibugaba mal(como pixeles agitados por el viento), el ancho de la imagen o, el alto de la misma, termina en nùmero impar.

saludos a todos.

inforsystem

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Formato Bmp
« Respuesta #95 en: Domingo 16 de Julio de 2006, 02:03 »
0
Cita de: "Danielo"
Citar
verigua en gdi acerca de lock bytes
No encontré mucho sobre lock bytes, pero por lo poco que vi y entendí  :(  me parece que  :think:  ¿es para trabajar con DirectX?

Citar
http://winapi.conclase.net/
Excelente página!!!... es con la que vengo aprendiendo desde el principio del reto ya que está todo muy bien explicado.

Y ya encontré una función similar a PutPixel  :jumpie: , en GDI se llama SetPixel y su sintaxis es:
Código: Text
  1. COLORREF SetPixel(
  2.     HDC hdc,          // manipulador a contexto de dispositivo
  3.     int X,            // coordenada x del pixel
  4.     int Y,            // coordenada y del pixel
  5.     COLORREF crColor  // color del pixel
  6.    );
  7.  

Aún no la he probado (falta de tiempo), pero creo que funcionará  :rolleyes:
Hola Geo:
Te doy un consejo: utiliza la funcion SetPixelV que es mas rapida ¿por que? porque no devuelve un valor COLORREF;

Si necesitas saber como dibujar con funciones independientes a dispositivos ( las funciones que tiene las letras DIB) dimelo y te respondere a la brevedad.

saludos.

inforsystem

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Formato Bmp
« Respuesta #96 en: Domingo 16 de Julio de 2006, 02:09 »
0
Cita de: "Diodo"
La unica pega que he visto es cuando vuelve el foco al formulario principal, despues de seleccionar la imagen con el dialogo, las partes del formulario principal que tapaba el filedialog no se repintan y se quedan en negro, sera cuestion de hacerle un invalidate al form principal ....   :hola:
Hola.
No se si utilizan Visual Basic, pero para los que utilizan VC++ puede que les suceda lo mismo, entonces, pueden colocarl el flag CS_SAVEBITS en la estructura WNDCLASSEX;
El sistema operativo guarda una copia, por eso, ten en cuenta el uso de memoria.

saludos.

inforsystem

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Formato Bmp
« Respuesta #97 en: Domingo 16 de Julio de 2006, 02:22 »
0
Cita de: "Danielo"
solo encuentro cosas como LoadImage y LoadBitmap que por lo visto cargan el bitmap automagicamente y no a partir de una matriz de bits...
 
Hola:
Para visualizar bitmaps en un HDC con las funciones LoadBitmap, debes utilizar funciones como SelectObject y DeleteObject.
...
HBITMAP hBmp =  LoadBitmap(...);

HOBJ  hBmpOld = SelectObject(hdc, hbmp);
...

Pero recuerda eliminarlo despues para liberar memoria.

....
DeleteObject(hBmpOld);
...
o puedes usarlo asi:
...
DeleteObject(SelectObject(hdc,hBmp));
...

Saludos.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Formato Bmp
« Respuesta #98 en: Domingo 16 de Julio de 2006, 06:41 »
0
Cita de: "inforsystem"
Hola Geo:
Te doy un consejo: utiliza la funcion SetPixelV que es mas rapida ¿por que? porque no devuelve un valor COLORREF;

Si necesitas saber como dibujar con funciones independientes a dispositivos ( las funciones que tiene las letras DIB) dimelo y te respondere a la brevedad.

saludos.
Jeje, Danielo es quien está trabajando con la WinAPI, yo estoy con wxWidgets :P.

Lo que tengo:
  • El programa está "terminado" (falta la "limpieza del código" y lo del archivo de información), abre cualquier bitmap y lo muestra en una ventana. Esto lo hice en Linux (Ubuntu).</li>
  • En Windows, me encontré con problemas con la clase wxFFile, se supone que es un "wrapper" para el tipo FILE de C, la usé pues mi intención es aprender bien el manejo de wxWidgets. Entonces, cambié las lecturas con esa clase por fread, logrando que funcionara  :smartass:. Ahora tengo problemas para mostrar caracteres acentuados (p. ej. Menú :P), ya no es parte del reto pero espero me echen una mano en los foros de wxWidgets :). (Ya veo que el desarrollo multiplataforma no es sencillo :alien:.</li>
Bien, a más tardar en un par de días mando mi programa para Linux :D.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Formato Bmp
« Respuesta #99 en: Domingo 16 de Julio de 2006, 07:18 »
0
Cita de: "inforsystem"
Cita de: "Diodo"
La unica pega que he visto es cuando vuelve el foco al formulario principal, despues de seleccionar la imagen con el dialogo, las partes del formulario principal que tapaba el filedialog no se repintan y se quedan en negro, sera cuestion de hacerle un invalidate al form principal ....   :hola:
Hola.
No se si utilizan Visual Basic, pero para los que utilizan VC++ puede que les suceda lo mismo, entonces, pueden colocarl el flag CS_SAVEBITS en la estructura WNDCLASSEX;
El sistema operativo guarda una copia, por eso, ten en cuenta el uso de memoria.

saludos.
No, Diodo y Yo hemos usado C#.NET, Danielo y Geo C++, Eugenio Enko ha usado Pascal ( Delphi).

Y tu... vas a participar?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io