Asuntos Oficiales > Retos

 Formato Bmp

<< < (12/35) > >>

Geo:
Yo tenía esto:

--- Código: Text ---   ancho = mb-&#62;cabInfo.ancho;   alto = abs(mb-&#62;cabInfo.alto);   bpp = mb-&#62;cabInfo.bitsPorPixel;      bytesLinea = bytesLineaRelleno =(LONG) ( (float)ancho * (float)bpp / 8 );   while (bytesLineaRelleno % 4 != 0)     bytesLineaRelleno++;        // Bytes de imagen sin relleno.   bytesImagen = alto * bytesLinea;   
Ok, me apuro, voy a reescribir la función de carga de info del mapa de bits, voy a intentar con wxWidgets y lo que tenía me da muchos errores por los tipos de datos :P.

Ahorita mismo hice unas pruebas para convertir un wxString a char* y me está dando muchos dolores de cabeza, por eso voy a reescribir las funciones para que reciban como parámetros tipos de wxWidgets.

saludos,
JJ (Geo).

Diodo:
Ups, es verdad salen torcidas  :lol: , pues eso en mi programa o funciona  :whistling:

Nagisa:

--- Cita de: "JuanK" ---oK , LA INFROMACION ESTA DEVUELTA.

Mi solucion, si mal no estoy es:


--- Código: Text ---ancho= (BMPwith * bytesPerPixel);... ancho+= ancho%4;bitsize = ancho * alto_imagen; 
--- Fin de la cita ---

Hola!!

La verdad es que creo que esta mal. La solucion seria:


--- Código: Text --- if (ancho%4 != 0 ) ancho += (4 - ancho%4);  
Por lo que no vale tu forma es por que si tengo una imagen de 5x5, ancho es 15, y ancho = 15 + 15%4 = 15 + 3 = 18, que sigue sin ser multiplo de 4.

La otra forma que postearon antes tambien era valida (es la que yo use en mi solucion). Lo que te hace es ahorrarte la comprobacion y calcular el modulo, es decir dos divisiones... La verdad que no es gran cosa por que esta operacion solo deberia de hacerse una vez en todo el codigo, pero menos es nada ;)

Un saludo!!

JuanK:

--- Cita de: "Nagisa" --- Hola!!

La verdad es que creo que esta mal. La solucion seria:


--- Código: Text --- if (ancho%4 != 0 ) ancho += (4 - ancho%4);  
Por lo que no vale tu forma es por que si tengo una imagen de 5x5, ancho es 15, y ancho = 15 + 15%4 = 15 + 3 = 18, que sigue sin ser multiplo de 4.

La otra forma que postearon antes tambien era valida (es la que yo use en mi solucion). Lo que te hace es ahorrarte la comprobacion y calcular el modulo, es decir dos divisiones... La verdad que no es gran cosa por que esta operacion solo deberia de hacerse una vez en todo el codigo, pero menos es nada ;)

Un saludo!!
--- Fin de la cita ---
Hola!, Bueno como te dije no recuerdo muy bien como era mi solucion, tendria que revisar en la noche mi viejo codigo C, pero lo que si recuerdo muy bien es que e solo usa un modulo, seguro en C es algo asi como esto:


--- Código: Text ---   ancho += (4 - ancho%4 )&#59;  
En todo caso reviso y les cuento.

Y claro esto no afecta el performance porque esta operacion se hace solo una vez.

JuanK:

--- Cita de: "geo" ---
--- Código: Text ---while (bytesLineaRelleno % 4 != 0)   bytesLineaRelleno++; 
--- Fin de la cita ---

Ahora que veo estas lineas de geo, se me hacen muy familiares, no descartaria que asi fuera como yo lo tenia.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa