Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Danielo515 on March 02, 2009, 12:46:23 PM

Title: Podría leer jpg con fread?
Post by: Danielo515 on March 02, 2009, 12:46:23 PM
Me gustaría saber si conociendo la implementación del formato jpeg podría leer como si de un archivo se tratase byte a  byte la información gráfica para luego representarla en un mapa. No me importa la velocidad con la que lo haga, es simplemente para que pueda convertirlos a otro formato gráfico más personal (implementado en bennu) y me gustaría que pueda ser accesible desde mi propio programa.

Un saludo.
Title: Re: Podría leer jpg con fread?
Post by: osk on March 02, 2009, 01:54:20 PM
¿Y por qué no se podría hacer?
Title: Re: Podría leer jpg con fread?
Post by: SplinterGU on March 02, 2009, 03:12:28 PM
seguro que se podria... peor existiendo otros formatos ya soportados no veo sentido en romperse el coco en un formato que no lo esta... otra cosa es un formato propio...
Title: Re: Podría leer jpg con fread?
Post by: Danielo515 on March 02, 2009, 04:23:53 PM
Quote from: osk on March 02, 2009, 01:54:20 PM
¿Y por qué no se podría hacer?

Hombre, la pregunta, debo reconocer que lleva un pequeño mensaje oculto, ¿alguien puede orientarme como hacerlo? porque hasta ahora, tal como dice splinter, lo he estado haciendo con formatos ya soportados, como el png, y una vez cargada la imagen me metía directamente con el buffer de la misma, pero en caso de ser otro formato me imagino que acceder a los distintos campos de la misma no sería tan sencillo y me imagino que no tan compatible con el formato map de bennu, o como armarlo para convertirlo a dicho formato.

Gracias
Title: Re: Podría leer jpg con fread?
Post by: Danielo515 on March 02, 2009, 04:24:59 PM
Quote from: SplinterGU on March 02, 2009, 03:12:28 PM
seguro que se podria... peor existiendo otros formatos ya soportados no veo sentido en romperse el coco en un formato que no lo esta... otra cosa es un formato propio...

Porque me gustaría que mi programa pudiera realizar el solo las conversiones de los formatos más populares(de momento png y jpg) directamente, sin intermediarios.

Muchas gracias.
Title: Re: Podría leer jpg con fread?
Post by: l1nk3rn3l on March 02, 2009, 05:55:09 PM
si se puede leer con la image.dll que pronto estara disponible en el bennupack

ya avisare...
Title: Re: Podría leer jpg con fread?
Post by: Danielo515 on March 02, 2009, 10:09:59 PM
Quote from: l1nk3rn3l on March 02, 2009, 05:55:09 PM
si se puede leer con la image.dll que pronto estara disponible en el bennupack

ya avisare...

Tió, y no podrías pasarme o vincularme alguna beta pre release o algo aunque solo tenga la función load_jpeg? es que ando un poco atascado con el desarrollo del programa y  me motivaría mazo poder seguir por esa vía.

Muchas gracias!!!
Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 12, 2009, 12:59:34 PM
Como poder se puede. Primero necesitas saber el tamaño de cada campo que tiene el fichero (numero de bytes) y luego usar una variable tipo byte para leer un byte, una variable tipo word para leer dos bytes y una variable tipo int para leer cuatro.
Luego, usando esos datos, vas rellenando los campos internamente (es mejor crear estructuras similares en tu código), y cuando tengas los headers listos, lees la informacion byte a byte y los metes en un array. Después, usando el algoritmo de decodificación que usan los JPEG, vas colocando los colores com map_put_pixel sobre un mapa que tu te crees, o bien vas guardando la info, pero es mejor que primero uses un mapa para tener toda la info en memoria.

Si vas por el foro de fenix y buscas mi programa para cambiar colores (cambia_color o ccolor) verás un ejemplo para leer bmp con fread. Tambien hay otro ejemplo, con el formato FNT si bajas los fuentes de FNTConv que acabo de colgar en proyectos.
Title: Re: Podría leer jpg con fread?
Post by: SplinterGU on March 12, 2009, 01:58:34 PM
en bennu, no es necesario tener una variable byte para leer 1 byte o una variable word para leer 2...
hay funciones que permiten especificar la cantidad de bytes a leer/escribir.
Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 13, 2009, 12:29:31 PM
Uh? eso es nuevo. Splinter, deja de poner trabas en mi camino a "maestro de los ficheros" de nivel 72 :D :D :D :D :D
Title: Re: Podría leer jpg con fread?
Post by: SplinterGU on March 13, 2009, 12:38:23 PM
no son trabas, son mejoras adicionales... :)
Title: Re: Podría leer jpg con fread?
Post by: Danielo515 on March 13, 2009, 12:50:10 PM
Quote from: Drumpi on March 12, 2009, 12:59:34 PM
Como poder se puede. Primero necesitas saber el tamaño de cada campo que tiene el fichero (numero de bytes) y luego usar una variable tipo byte para leer un byte, una variable tipo word para leer dos bytes y una variable tipo int para leer cuatro.
Luego, usando esos datos, vas rellenando los campos internamente (es mejor crear estructuras similares en tu código), y cuando tengas los headers listos, lees la informacion byte a byte y los metes en un array. Después, usando el algoritmo de decodificación que usan los JPEG, vas colocando los colores com map_put_pixel sobre un mapa que tu te crees, o bien vas guardando la info, pero es mejor que primero uses un mapa para tener toda la info en memoria.

Si vas por el foro de fenix y buscas mi programa para cambiar colores (cambia_color o ccolor) verás un ejemplo para leer bmp con fread. Tambien hay otro ejemplo, con el formato FNT si bajas los fuentes de FNTConv que acabo de colgar en proyectos.

Gracias drumpy, pero a diferencia del Jpeg, del BMP si eh encontrado información sobre su estrcuctura interna, por lo que me podría poner con ello con un poco de paciencia, pero seguro que tu ejemplo me ayudará a mejorar mi estilo de programación.

Muchas gracias.
Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 13, 2009, 01:09:51 PM
Quote from: SplinterGU on March 13, 2009, 12:38:23 PM
no son trabas, son mejoras adicionales... :)
[ironic mode=OFF]

Quote from: Danielo515 on March 13, 2009, 12:50:10 PMGracias drumpy, pero a diferencia del Jpeg, del BMP si eh encontrado información sobre su estrcuctura interna, por lo que me podría poner con ello con un poco de paciencia, pero seguro que tu ejemplo me ayudará a mejorar mi estilo de programación.

Muchas gracias.

A falta de tiempo para hacer una búsqueda intensiva, te remito a que te pases por:
http://es.wikipedia.org/wiki/JPG
Si eres capaz de entender e implementar el algoritmo... primero mi enhorabuena XD y segundo, pues que ya tienes gran parte del camino hecho, sólo te faltaría encontrar la cabecera y listo.
Yo estuve en algo similar con el formato GIF, aun sigo peleando con el algoritmo LZW, pero en cuanto lo consiga ¡GIF2FPG para todos!
Title: Re: Podría leer jpg con fread?
Post by: darío on March 13, 2009, 07:19:44 PM
No se si conocéis está página:
http://www.wotsit.org/ (http://www.wotsit.org/)

Tiene las especificaciones de muchos formatos. A lo mejor puedes encontrar ahí lo que buscas :).

Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 15, 2009, 01:00:22 AM
Genial, acabas de darme nueva informacion, más clara, acerca del formato GIF. El conversor GIF-FPG ha subido cinco puestos de golpe en mi pila de proyectos!!
Te odio  >:( >:(
Title: Re: Podría leer jpg con fread?
Post by: Goku jr on March 15, 2009, 11:47:00 AM
Madre mia,yo no se como sabeis tanto de ficheros,el otro dia estube intentando hacer un programa que leyera un fpg,pero estas que consegui algo xDD
Title: Re: Podría leer jpg con fread?
Post by: Danielo515 on March 15, 2009, 12:07:07 PM
Esta información llega justo cuando mi nivel de motivación ha caido bajo bajo. Después de tirarme tres o cuatro horas organizando el código (para hacerlo más eficiente y legible) y peleandome con alguna nueva función que me obligó a cambiar la forma en la que la mayoría de procesos hacian sus cositas.....
¡¡¡¡VOY Y LO SOBREESCRIBO CON UNA VERSIÓN ANTERIOR!!!

Por favor, decidme que os pasa muy a menudo y quizá me sienta un poco menos suicidable...

PD: muchas graciass por la página, siempre está genial poder consultar varias especificaciones.
Pero, joder con el jpg, la madre que lo trajo....
Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 15, 2009, 04:54:17 PM
Venga, para subirte el ánimo, te cuento algo de lo mio:
Resulta que andaba liado con mi motor de tiles, portándolo a gp2x, cuando cargo el código y empieza a hacer cosas raras: tiles que no se dibujan, escenario totalmente revuelto... Total, creo una funcion de debug, que muestre por pantalla los tiles que lee, y no tienen ningun sentido. Creo una funcion aparte para leer el fichero y lo comparo desde el ordenador, y no coincide. Total, que me pongo en contacto con el creador del port, Puck, y le comento lo del fallo de lectura de ficheros.
Durante dos meses estamos de comunicaciones por el foro y MP, que si está arreglado, que si no va, que si si, que si no...
Total, abandono.
Cuatro meses despues, retomo el código, lo reviso entero y no veo fallos. Pruebo con otro fichero y va bien. Y entnces me di cuenta: EL FICHERO QUE DABA PROBLEMAS NO ERA EL FICHERO FINAL, ERA UNA VERSION DE PRUEBA QUE CONTENÍA VALORES ALEATORIOS, Y NO COINCIDÍAN CON LO ESPERADO. Aun tengo el mensaje de auto-linchamiento en gp32spain pidiendo disculpas :S

PD: mi experiencia con ficheros se debe a un duro entrenamiento, matando limos, bird-bells y alguna medusa ocasional. A base de subir niveles vas aprendiendo XD Aun me queda mucho para ser "maestro de ficheros", es el camino que elegí, como Donan en "artista 3dsero" o momia con "mago del puño y la patada" :P
Goku jr: exp+1;
Title: Re: Podría leer jpg con fread?
Post by: SplinterGU on March 15, 2009, 05:48:32 PM
te comento, por si te sirve... el port de fenix a gp2x, tiene problemas con estructuras alineadas a tamaños no pares (word), si usas char dentro de estructuras vas perdido...
no se si eso te estara afectando... pero te lo comento por las dudas...

en realidad es el procesador que solo accede a direcciones de memoria alineadas.

eso se puede corregir, de hecho ya lo tenemos corregido en el port de gp2x de bennu... pero bueno, fenix va mal al respecto.
Title: Re: Podría leer jpg con fread?
Post by: Drumpi on March 16, 2009, 11:07:33 AM
Eso podría explicar algunos cuelgues que tengo con el motorcillo tileado... o no, no se, por no alinear bien los datos no se cerraría el programa apenas hace un alloc de datos ¿no?
De todas maneras, aun tengo que comprobar el fallo del número de lineas (por lo visto, el compilador hace cosas raras segun el numero de lineas en la 092a, si se añade una linea en blanco funciona bien, pero no logro reproducir el fallo).

Muchas gracias por la info.
Title: Re: Podría leer jpg con fread?
Post by: SplinterGU on March 16, 2009, 10:40:32 PM
si bien trabajé mucho para mejorar fenix, sigue siendo bastante inestable...
a esta altura diria que seguir usandolo es solo capricho...