Iniciar sesión

Ver la versión completa : Generar .jpg desde C



josekona1
14/11/2014, 23:17
Hola a todos, tengo una duda de programación y no se como abordarla. El hecho es que genero a través de C un dibujo en la consola y quisiera guardarla como un archivo .jpg pero no tengo ni p... idea de como se hace, alguien puede echarme una mano?. Muchas gracias.

josepzin
14/11/2014, 23:37
Búscate alguna librería que lo haga, seguramente esa sea la manera.

josekona1
14/11/2014, 23:44
Jolines, es que me estoy volviendo loco, no soy informático, y no encuentro un libro o algo donde pueda aprender a trabajar bien con un entorno gráfico en C. Había probado con la libreria conio.h pero no encuentro material para aprender y con Open Gl me result complicado. No se, estoy hasta los... . Con lo fácil que era dibujar en basic....me podéis orientar un poco en el tema?. Sobre todo en cuanto a libros que lo expliquen bien y demás. Muchas gracias.

josepzin
14/11/2014, 23:47
Yo de C nada, pero si en PHP se puede hacer sin mucha historia me imagino que en C también se podrá... A ver si aparece algún gurú de esos que hay por aquí :-P

Jurk
15/11/2014, 00:44
y si usas C + SDL?

swapd0
15/11/2014, 10:41
¿Y si generas un bmp (que es mas fácil) y después lo conviertes con cualquier programa a jpeg?

^MiSaTo^
15/11/2014, 10:50
Jolines, es que me estoy volviendo loco, no soy informático, y no encuentro un libro o algo donde pueda aprender a trabajar bien con un entorno gráfico en C. Había probado con la libreria conio.h pero no encuentro material para aprender y con Open Gl me result complicado. No se, estoy hasta los... . Con lo fácil que era dibujar en basic....me podéis orientar un poco en el tema?. Sobre todo en cuanto a libros que lo expliquen bien y demás. Muchas gracias.

No se qué quieres hacer en concreto. Si es algun juego mírate las SDL. Aquí (http://lazyfoo.net/SDL_tutorials/) tienes un tutorial (el primero que ha salido en google).
Si es algo tipo interfaz gráfica con sus ventanitas y demás las SDL no se si son la mejor opción.

pakoito
15/11/2014, 12:24
Si lo que quieres es hacer un pantallazo de una aplicacion de consola que ha hecho un dibujo en ascii y exportarlo a .jpg, no vas a poder porque es muy complicado. Tienes que ir a windows, pedir un screenshot y recortarlo.

Si lo que quieres es dibujar programáticamente en un lienzo virtual y luego exportarlo a un imagen (no tiene por qué ser jpg, cualquier formato te sirve) entonces usa SDL, Allegro o SFML.

Si lo que quieres es procesar jpgs sin mas, libjpeg http://libjpeg.sourceforge.net/

josekona1
15/11/2014, 12:25
Lo que quiero es que el dibujo de la consola se guarde como un dibujo que pueda abrir en paint u otro programa, había pensado en formato jpg, pero si es mejor otro o es más fácil mejor. Con que libreria se producía hacer?. Y perdonad mi ignorancia. Muchas gracias.

swapd0
15/11/2014, 13:05
El problema del jpg es que es mucho mas complicado y tiene perdidas, ademas si quieres después editarlo tendrás pixels con colores parecidos que te joderan la edicion, en caso de que el dibujo sea con colores planos.

Pero vamos, mira como va el bmp y ya esta, le pones una cabecera con en ancho el alto y después vuelcas los datos, desde abajo hacia arriba IIRC.

hardyx
15/11/2014, 22:39
Para dibujos no es recomendable usar jpg, ya que es un formato con pérdida de calidad, deberías usar el png. Para C tienes la libpng que es gratuita y de código abierto, pero preparate para pelearte con estructuras (en este y en todos los formatos).

La librería:
http://www.libpng.org/pub/png/libpng.html

Tutoriales de uso:
http://www.labbookpages.co.uk/software/imgProc/libPNG.html
http://www.lemoda.net/c/write-png/

También tienes la SDL_image que es de más alto nivel, es una capa encima de las libpng, libjpeg y demás.

http://jcatki.no-ip.org:8080/SDL_image/SDL_image.html

josekona1
15/11/2014, 23:00
Ok. Estoy pelándome con hacer gráficos en C, en cuanto que maneje algo el sistema pasaré a lo de png. Muchas gracias q todos. Un abrazo.

Rivroner
15/11/2014, 23:01
Hola a todos, tengo una duda de programación y no se como abordarla. El hecho es que genero a través de C un dibujo en la consola y quisiera guardarla como un archivo .jpg pero no tengo ni p... idea de como se hace, alguien puede echarme una mano?. Muchas gracias.

No tengo ni idea, pero yo te pongo esto. :D

http://www.andrewewhite.net/wordpress/2008/09/02/very-simple-jpeg-writer-in-c-c/

He tardao 5 segundos en google, espero que te sirva. :D

pakoito
15/11/2014, 23:01
Lo que quiero es que el dibujo de la consola se guarde como un dibujo que pueda abrir en paint u otro programa, había pensado en formato jpg, pero si es mejor otro o es más fácil mejor. Con que libreria se producía hacer?. Y perdonad mi ignorancia. Muchas gracias.

Lo que no entiendo es qué quieres que se guarde, algo hecho puramente en consola como esto

http://rogue-life.ourden.org/files/MetalGear/mgrl-1.png

o guardar una imagen pintada a mano con un algoritmo tipo

http://rjduran.net/images/projects/glsl-textures/application.png

http://joshuasaxe.com/wordpress/wp-content/uploads/2010/04/algorithmic_art-1023x718.png

josekona1
15/11/2014, 23:42
No. Lo que tengo es un archivo .txt con coordenadas en el plano xy, en particular 10e6 coordenadas que corresponden a la posición de 10e6 partículas. Con ese archivo lo que haré será ir leyéndolo de 50 en 50 partículas y dibujándolas como puntos, cada 50 partículas quiero hacer una fotograma de estas, y así cuando tenga 20000 fotogramas lo que quiero es enlazarlos y hacer una película con ellos, así lo que tendría que salir es una película donde se viera cómo evolucionan esas partículas. Es hacer una película de puntos que crecen a partir de un archivo de coordenadas.

Ahora mismo lo que tengo es el archivo en txt, creo que puedo leer en C ese archivo y dibujar las partículas para que aparezcan en la consola, pero una vez que lo tengo no sé como grabar esa imagen y luego enlazar todas las que tengo para hacer la peli.

pakoito
16/11/2014, 01:05
Osea que si lo he entendido bien tu lo que quieres es hacer una serie de bitmaps dibujados por 50 píxeles cada uno, y luego de todos los bitmaps/frames que saques (2e5) a ~20 frames por segundo te salgan 3 horas de vídeo gif, o 1 hora a 60fps.

Tienes varias herramientas por el camino. La primera es uno que te genere un simple bitmap cada 50 puntos, para eso tienes SDL. Una vez exportes los (10e5/2) bitmaps en el formato que quieras de los que permite SDL, si tu ordenador no ha hecho kaputt necesitas buscar una librería que cree gifs o videogifs a partir de N ficheros. Google me dice que uses GD Graphics Library: http://libgd.bitbucket.org/