Asuntos Oficiales > Retos

 Formato Bmp

<< < (21/35) > >>

Nagisa:
Hola!


--- Citar ---Como habran observado aquellas personas que les sucedia que la imagen de dibujaba mal(como pixeles agitados por el viento), el ancho de la imagen o, el alto de la misma, termina en nùmero impar.

--- Fin de la cita ---

Mi codigo no hace ningun tipo de tratamiento especial con la altura de la imagen (con el ancho si, pero eso ya está más que hablado...), y se pintan todas las que he probado bien (una de ellas de 1001 x 747).  :blink:


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

--- Fin de la cita ---

Por lo que parece, lo que hace es alinear a bytes el numero de bits por pixel para ver cuantos hay que leer, no?? De todas formas, ¿donde va exactamente el parentesis que falta?  :alien:

Un saludo!!  :hola:

JuanK:

--- Cita de: "Nagisa" ---
--- Citar ---bitsize = (ancho_imagen * ((bpp + 7) / 8) * abs(alto_imagen);

--- Fin de la cita ---

De todas formas, ¿donde va exactamente el parentesis que falta?  :alien:
--- Fin de la cita ---
al parecer sobra el primero.

Danielo:
Estoy teniendo problemas con la matriz de colores que la definí de la siguiente manera:

--- Código: Text ---struct TMatriz{          COLORREF **coords;          int maxX,maxY;       }; ... porque como estoy utilizando SetPixel, que tiene la sintaxis:

--- Código: Text ---COLORREF SetPixel(    HDC hdc,          // manipulador a contexto de dispositivo     int X,            // coordenada x del pixel    int Y,            // coordenada x del pixel    COLORREF crColor  // color del pixel   ); ... el programa no logra mostrar el bmp en pantalla, supongo que sera porque la estructura de COLORREF almacena un valor de 32 bits y en el caso del bmp al tener una matriz de COLORREF la memoria se desborda... lo extraño es que no me sale ningún mensaje de error, simplemente ejecuto el programa y no aparece ni la ventana.

Lo que se me ocurrió entonces fue cambiar COLORREF por unsigned char, o sea:

--- Código: Text ---struct TMatriz{          unsigned char **coords;          int maxX,maxY;       }; 
y ahora lo que esta pasando es que la imagen se carga en la ventana, pero se esta viendo en color rojo y negro, evidentemente estoy manejando mal los colores RGB, no se si existira alguna forma de convertir un unsigned char a COLORREF o si tendre que hacer una función que haga eso.

La parte de obtener el cabezal y la información del cabezal del archivo bmp está funcionando bien, también he intentado con SetPixelV como me sugirió inforsystem y tampoco me dio resultado.

Nagisa:
Hola:

A mi me pasaba algo asi al principio. No se si sera lo mismo, pero fue que me tratataba los bytes que leia como con signo. Asi por ejemplo, si leia 0xFF, me lo trataba como un -1 en lugar de un 255. Quizas por eso cuando pones unsigned char te vaya bien.

Lo malo es que yo lo tengo en Java y todos los tipos tienen signo T__T, asi que me costo bastante solucionarlo...

Saludos!!

Geo:

--- Cita de: "Danielo" --- Estoy teniendo problemas con la matriz de colores que la definí de la siguiente manera:

--- Código: Text ---struct TMatriz{          COLORREF **coords;          int maxX,maxY;       }; ... porque como estoy utilizando SetPixel, que tiene la sintaxis:

--- Código: Text ---COLORREF SetPixel(    HDC hdc,          // manipulador a contexto de dispositivo     int X,            // coordenada x del pixel    int Y,            // coordenada x del pixel    COLORREF crColor  // color del pixel   ); ... el programa no logra mostrar el bmp en pantalla, supongo que sera porque la estructura de COLORREF almacena un valor de 32 bits y en el caso del bmp al tener una matriz de COLORREF la memoria se desborda... lo extraño es que no me sale ningún mensaje de error, simplemente ejecuto el programa y no aparece ni la ventana.

Lo que se me ocurrió entonces fue cambiar COLORREF por unsigned char, o sea:

--- Código: Text ---struct TMatriz{          unsigned char **coords;          int maxX,maxY;       }; 
y ahora lo que esta pasando es que la imagen se carga en la ventana, pero se esta viendo en color rojo y negro, evidentemente estoy manejando mal los colores RGB, no se si existira alguna forma de convertir un unsigned char a COLORREF o si tendre que hacer una función que haga eso.

La parte de obtener el cabezal y la información del cabezal del archivo bmp está funcionando bien, también he intentado con SetPixelV como me sugirió inforsystem y tampoco me dio resultado.
--- Fin de la cita ---
¿Y cómo realizas la lectura de tu matriz de colores?
Si lees directo hacia COLORREF, recuerda que es un DWORD y la información de colores en el archivo está en 3 bytes, no sé si por allí sea el problema.

http://msdn.microsoft.com/library/default....colors_8bvm.asp

Saludos,
JJ (Geo).

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa