Podría leer jpg con fread?

Started by Danielo515, March 02, 2009, 12:46:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Danielo515

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.

osk

¿Y por qué no se podría hacer?

SplinterGU

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...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Danielo515

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

Danielo515

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.

l1nk3rn3l

si se puede leer con la image.dll que pronto estara disponible en el bennupack

ya avisare...

Danielo515

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!!!

Drumpi

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.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

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
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

no son trabas, son mejoras adicionales... :)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Danielo515

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.

Drumpi

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!
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

darío

No se si conocéis está página:
http://www.wotsit.org/

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

My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Drumpi

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  >:( >:(
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)