Foros del Web » Programación para mayores de 30 ;) » C/C++ »

se puede manejar imagenes en c

Estas en el tema de se puede manejar imagenes en c en el foro de C/C++ en Foros del Web. hola a todos. bueno lo que quiero saber es si se puede trabajar con imagenes en c y si como pasar una imagen a una ...
  #1 (permalink)  
Antiguo 23/04/2014, 15:26
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Pregunta se puede manejar imagenes en c

hola a todos.
bueno lo que quiero saber es si se puede trabajar con imagenes en c y si como pasar una imagen a una matriz para asi poder analizar pixel por pixel y saber su rgb y si se puede como lo podria hacer y que funciones deberia de utilizar.
  #2 (permalink)  
Antiguo 23/04/2014, 22:00
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

claro que se puede XD.
Echa un ojo aquí en el post de un compañero que habla sobre el formato bmp: http://www.elotrolado.net/hilo_image...-fondo_1807836

Y en este video tiene lo que creo para mi una cosa muy interesante, que explica pau sobre un formato llamado pbm. Mas que nada para que aprendemos como funciona eso de las imágenes =D
https://www.youtube.com/watch?v=_cVU...qZzYPNN8TSPQFH

busque en google los formatos de pixel y los formatos de imágenes.

Básicamente es eso es guardar cada pixel los tonos que tiene cada uno de ellos XDD
Lee esos conceptos y los entenderás, seria hacer una tabla que guardara 3 valores rgb.
las imágenes suelen tener un tamaño, por ejemplo de 100x80, pues para saber la cantidad de pixel es hacer el calculo de 100*80 que te devuelve el tamanio de la tabla que tienes que crear y seguramente seria una tabla de estruct o de clases ya que tienes que guardar 3 colores.
otra cosa que aconsejo es evitar tablas multi dimensionales ya que las tablas sencillas hacen mas rápido el calculo. En imágenes se suele utilizar tablas normales no matrices tridimencionales ni bidimencionables que aparte de ser un flipe para pasarlas a funciones XDD, hacen mas lento la ejecución del programa, mejor tratarlas todas consecutivas y a la hora de pintarlas o lo que sea sabes como debes imprimir por los 100X80.

Si buscas algo mas encuentras como hacer con los formatos mas corrientes(jpg, tga, png...).
Bueno y hablando de tga y png son formatos con transparencia, o sea que si necesitas guardar un 4º valor que es el alpha, (r,g,b,a). No todos las imágenes lo tienen, algunas que lo soportan son TIFF, TGA, PNG y PSD entre otros.
  #3 (permalink)  
Antiguo 24/04/2014, 10:46
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: se puede manejar imagenes en c

hola vangodp.
bueno esta interensante la informacon anda mas que no sabes como podria manegar imagenes jpeg es que e sde lo que ando buscando ya que es uno de los formatos mas usados y gracias pro la informacion.
  #4 (permalink)  
Antiguo 24/04/2014, 13:06
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

Como has comprobado en otro foro c++ estándar no tiene funciones para imágenes. Tienes que agregar librerías externas, pero eso no es una desventaja, si llevamos trabajando con librerías todo el rato desde el primer día. :D
Allá por los 70 cuando se invento cpp XDD las imágenes ni siquiera existían creo jejeje
Por eso no vas encontrar nada de gráficos en cpp, por que no existía ni las pantallas coloradas :D
Así que "todo" lo referente a gráficos vamos a tener que echar mano de una librería.
¿Que es una librería? Yo antes de hacer esa pregunta me preguntaría otra cosa.¿Que es un sistema operativo?
Según: http://es.wikipedia.org/wiki/Sistema_operativo ...un sistema operativo es"Es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes.....blablabla", eso es lo que nos interesa solo XDD
O sea que el que gestiona realmente el hardware es el SO, no nosotros. Nosotros hacemos llamadas a las APIs de los sistemas operativos, en mi caso la api de windows o windows api, como quieras XD
Tu crees que realmente programas en cpp y que controlas el ordenador jeje.Nosotros controlamos todo lo que nos permite el SO.
Las librerías hacen llamadas al SO, puedes aprender directo los comandos de las APIs y no te va hacer falta ninguna librería, pero realmente la API es una librería =D
Así que nunca nunca nunca ponga mala cara a las librerías por que no te puedes librar de ellas XDD. Para eso deberías crear el SO desde 0 y escribiendo todo el programa, luego no te orvides de los controladores y tal y tal jejej
Así que te explicare de que vamos los programadores y no solo digo los de cpp sino todos.
Nosotros hacemos lo que el SO nos permite hacer, y esta es la cruda realidad.
O te lo haces directamente en la API o te busca una LIB que es algo mas portable ya que cada sistema operativo tiene su API, entonces no te sirve aprender la API de windows y después vas a tener que aprender la de linux también. La lib se encarga de que se muestre el contenido lo mas parecido posible en ambos sistemas operativos, la lib sabe como llamar a cada API debidamente.
http://es.wikipedia.org/wiki/API_de_Windows
Echa un ojo ahí y veras que todo lo que hacemos pasa por ella.
Me siento como en java XDD
Bueno espero que te aya abierto un poco mas la mente, no se puede manejar imágenes con librerías estándar por que mientras que se hizo cpp no había colores y que la api la llamamos si o si, pues mejor es hacer uso de una librería minimamente fiable que nos facilite el trabajo, ya que aprender 2 APIs(windows/linux) seria mucha caña(al menos para miXD).
Puedes buscar mas por tu cuenta, si todo lo que te he balbuceado ya no sabes claro XDD
Nosotros no tenemos acceso a las tripas de windows. Es su API que sirve de puente para que nuestras aplicaciones se comuniquen con SO que gestiona los recursos.
Nosotros->cpp->libs->API(+libs XD)->SO->hardware.
Espero no haberte destruido la ilusión :DD
Es que si la cosa no fuera así cualquier programador mal intencionado seria capaz de echar abajo los sistemas y aun así lo ponen la cosa difícil. XDD
Bueno -_-' Sobre tu pregunta.... http://cimg.sourceforge.net/referenc..._tutorial.html

Según ha dicho eferion en otro foro, QT dispone de librerías propias para manejo de imágenes(QImage).
luego esta: openCV que según el sirve para matar moscas con cañón XDD
La que te puse el link antes "cimg" y una mas que vi, y esta esta pero ni idea "jpeglib".

No me preguntes cual es la mejor por que no he usado ninguna de ellas.

Otra cosa que puedes hacer es usar una de las que son dedicadas a juegos como puede ser SFML que te permite manejar las imágenes en varios formatos incluido transparencia. SDL, SFML2 o allegro.
Te digo que no es mala sfml. Echa la un ojo a ver que te parece, incluso te permite usar el bufer de la gráfica y ver los cambios en tiempo real ya que se dedica a juegos, y te permite hacer un save de la imagen.
Echa un ojo en algunas de sus funciones http://www.sfml-dev.org/documentatio...f_1_1Image.php
  #5 (permalink)  
Antiguo 24/04/2014, 21:15
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: se puede manejar imagenes en c

hola vangod.
bueno pues revisare tu informacion y bueno no mis esperansas siguen por que se que se puede obtener la tabla que ya mencione en el otro foro y bueno para eso creo que me tengo informar bien y dedicarle tiempo completo bueno creo que eso lo intentare despues ya que ahorita no le puedo dedicar tiempo completo para solucionarlo rapido pero gracias por tu informacion me sservira para otras cosas que e pensado hacer saludos.
  #6 (permalink)  
Antiguo 25/04/2014, 01:28
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: se puede manejar imagenes en c

Hola amigos, una pregunta y disculpen que salga con cualquiera, pero C++ está en evolución?
Osea no sé cuando fué la última vez que se lo mejoró, porque por ejemplo el intérprete de Python:

Python 3.4.0 March 17, 2014

Esa es la última versión que se liberó el mes pasado, y en C++? cuando sería la última vez que lo modificaron?
Quizás mi pregunta sea tonta, porque en realidad, el compilador es el que va en evolución, no el lenguaje, ¿es esto correcto?.

Yo quiero aprender C++ porque me dijeron que es un "mounstruo enorme con millares de cosas a tener en cuenta", además he visto programas hechos en C++ y son bastante buenos.

Gracias!!
  #7 (permalink)  
Antiguo 25/04/2014, 07:02
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: se puede manejar imagenes en c

Hola:

Tanto el lenguaje como los compiladores de c++ están en evolución.
La última versión de C++ es esta:
http://es.wikipedia.org/wiki/C++11

Actualmente se está trabajando en una nueva versión:
http://en.wikipedia.org/wiki/C++14

En la red puedes ver q compiladores soportan cuales características de esas versiones.
Ej:
http://www.italiancpp.org/wp-content...Feb2014-r1.pdf
https://wiki.apache.org/stdcxx/C++0xCompilerSupport

slds;

nup_

Última edición por nup_; 25/04/2014 a las 07:08
  #8 (permalink)  
Antiguo 25/04/2014, 11:30
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

seguro abandonan a python antes que cpp XDD
  #9 (permalink)  
Antiguo 25/04/2014, 14:58
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: se puede manejar imagenes en c

Muy buena info nup_
Muchas gracias!!
Yo tengo estas versiones:

Code::Blocks
Release 13.12 rev 9501 (2013/12/25 19:25:45) gcc 4.7.1 Windows/unicode - 32 bit

y me va muy bien con ellas!!! Pero cláro con el tiempo, actualizaré
  #10 (permalink)  
Antiguo 25/04/2014, 17:18
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

pero a ver... una cosa es el compilador y otra totalmente distinta es lo que comenta _nup.
Lo que comenta nup es que ha salido el estándar C++11 y están haciendo el c++14.
Igual ya llevaban el c++98 entre otros XDD
MinGW es el compilador y ese si ya esta en la versión 4.8.algo XDD. Es la que tengo.
Code blocks que es el IDE le puedes descargar con o sin mingw.
Esta claro que no es lo mismo actualizar c++ que python.
Hay muchos python... esta el cython que es c y seguro el que usas, el ironthon que es c#, esta el jython que es java, y una versión de ruby que no me acuerdo, y aun es capaz de tener mas alguna que otra XDDD.
Cada una de las versiones sirven para una cosa distinta.
Python tiene sus encantos
Algún día lo probare cuando me gradúe en c++

O puede que vaya a ensamblador primero XDD
  #11 (permalink)  
Antiguo 25/04/2014, 19:05
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: se puede manejar imagenes en c

Como puedo saber que versión de C++ tengo?
  #12 (permalink)  
Antiguo 26/04/2014, 01:14
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

¿De que de compilador o de c++? XDD
A ver cuando instalas codeblocks el mingw esta dentro de la carpeta de codeblocks.
Abres una ventana de comandos y escribes g++. Si no te dice nada o que el comando no existe es por que no tienes esta carpeta agregada a las variables de entorno. Vaya hasta la carpeta de codeblocks con los comandos cd/, .. dir ya sabes XDD y una vez dentro de la carpeta mingw/bin haz el comando ese.
Si quieres que funcione sin tener que ir a la carpeta tienes que declarar el la ruta/path en las variables del entorno. Seguramente no la tengas.
Por la versión de codeblocks puedes saber mas o menos cual llevas.
Te aconsejo que instales la próxima vez el mingw y declares la variable de entorno, luego el codeblocks. Instala todo en la ruta de disco c:\ ya que es mas fácil para futuras configuraciones.
Bastaría copiar la carpeta mingw la de codeblocks y la que se encuentra en la ruta %appdata% y tienes todo a mano para trasladar a otro ordenador sin complicaciones o hacer una copia de respaldo por si la lias XD
Otra cosa que destacar es que codeblocks nunca lleva la ultima versión si no una mas atrás.
instala la 4.8 sola y reemplaza una por otra dentro de codeblocks.
El problema esta cuando tienes mas de un IDE ¿Pues vas a tener un mingw para cada uno?
Se instala en el disco c:\ y les configuras las rutas y el path.

-Descargas el instalador de mingw get.
-Una vez instalado el instalador te va a dar una lista con muchas cosas por descargar. No vayas a descargar todo jaja
-Marca la opción basics setup y después marca que se descargue el mingw-base y el mingw-gcc-g++, serán las ultimas versiones. Dale a instalar y elije que se quede todo dentro de c:\MinGW.
-Luego cuando termine de descargar los paquetes vas y declaras las variables del entorno de la carpeta c:\MinGW\bin que es donde esta el gcc y g++ que vas a necesitar.
-Ya puedes entrar el comando g++ en consola y te va decir la versión de gcc instalada.
-Luego vas y instalas el codeblocks o cualquier otro IDE mediamente decente que te va agarrar la configuración automáticamente.
Si no entra debes configurar a mano el compilador para que pille el mingw desde su nueva carpeta.
puedes incluso tener mas de una versión en el mismo ordenador pero no recomiendo que las tengas todas en el path ya que windows puede que no sepa a cual llamar.
http://static.cprogramming.com/main_...r_settings.png
La configuración debe ser así, pero la ruta de la carpeta no debe ser c:\programfiles(x86)\codeblocks\mingw sino c:\MinGW que es donde debe estar y no dentro de codeblocks.
  #13 (permalink)  
Antiguo 26/04/2014, 01:53
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: se puede manejar imagenes en c

Cita:
¿De que de compilador o de c++? XDD
De C++

Cláro, pero yo ando muy bien con Code::Blocks y si es probable que MinGW deba ir en C:\MinGW, pero eso no es un problema para mi, de hecho el problema lo tenía cuando instalé Geany y el compilador por separado, ahí no sabía que instalar y si es cierto lo que decís, hay un monton de paquetes a instalar, pero no sabía cual instalar y además tenía problemas para compilar, así que desinstalé MinGW e instalé Code::Blocks.

Algo importante, es que CodeBlocks utiliza el compildor MingGW y no hay ningún problema de que la carpeta MinGW esté dentro de CodeBlocks ya que lo unico que hace el compilador es crearte el ejecutable, no hace más que eso, pero a mi me funciona todo bárbaro hasta ahora.

Igual muchas gracias por tu ayuda y consejos, siempre tan solidario y expresivo

PD: El foro tiene un problema, no puedo copiar los textos para ponerlos como Cita porque se re clava por unos segundos la página, jamás me pasó eso en otros foros, es raro, al igual que cuando copio un código, excepto que al código lo vea en Vista original, ahí no se traba.
Acabo de comprobar que el problema solo pasa cuando estoy logueado.

Última edición por Principe_Azul; 26/04/2014 a las 02:01
  #14 (permalink)  
Antiguo 26/04/2014, 02:36
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: se puede manejar imagenes en c

Pues si que es raro XDD
Sobre el mingw, no hay nada escrito donde deba ir simplemente la gente escoje lo mas simples.
si lo instalas en c:\MinGW
a la hora de configurar solo tienes que poner c:\MinGW y no c:\archivos de programa (x86)\tortilla de papa 42\la birra se calienta XDDD......
Y todos los IDE pueden tener acceso.
Otro punto a favor de tenerlo ahi es que ya una ves el codeblocks instalado a gusto con tus configuraciones y tengas que reinstalar todo otra vez, si o si ya veras de lo que hablo XDD
Claro que Codeblocks te da todo masticado ¡Si es el mejor! =D.
Ya les vas pillando el tranco sobre la marcha, regla numero uno de los mecánicos si no esta roto no hay que arreglarlo jejej, pero la regla numero uno de los hackers es ¿Se puede mejorar? XDD
Si solo usas codeblocks y te va bien pues dejadlo todo ahí, no vas a notar nada sobre un compilador 4.7.8 a uno 4.8.1 a no ser que aya cosas criticas que arreglar, cosa que no he notado.
Por cierto hasta el codeblocks se aconseja instalar en c:\ XD
Bueno suerte, la cosa es escribir código no configurar compilador. llevas razón yo es que soy medio hacker =D
  #15 (permalink)  
Antiguo 26/04/2014, 05:45
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: se puede manejar imagenes en c

Así es campeón!!!!!

Etiquetas: funcion, imagenes, manejar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:35.