Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: elman en Junio 20, 2019, 09:50:49 PM

Título: crear imagen en lenguaje c
Publicado por: elman en Junio 20, 2019, 09:50:49 PM
hola, podrian ayudarme a realizar estas imagenes en lenguaje c, estoy iniciando a aprender y me gustaria que me dieran una ayudita
(https://i.postimg.cc/NMmCLm1H/excersi.jpg) (https://postimages.org/)
Título: Re:crear imagen en lenguaje c
Publicado por: ??????? en Junio 20, 2019, 11:35:01 PM
Buenas, para ayudarte un poco, hice la forma más sencilla y barata para mostrar un recuadro  ;D
Supongo que con eso te ayudé en algo, ahora piensa el resto tú, porque sino no aprenderás nada.
Necesitarás solamente pensarlo, lo demás es solo código.


#include <stdio.h>

int main()
{

int ancho = 8;
int altura = 10;


for(int i=0; i<altura; i++)
{
printf("\n");

if((i==0) || (i==altura-1))
{
for(int a=0; a<ancho; a++)
{
printf("*");
}
}
else
{
printf("*");
for(int h=0; h<ancho-2; h++)
{
printf(" ");
}
printf("*");
}
}

printf("\n\n");

return 0;

}



Espero haberte ayudado en algo, saludos!
Título: Re:crear imagen en lenguaje c
Publicado por: animanegra en Junio 21, 2019, 05:39:25 AM
¿Por que no miras el formato de imagen pgm?
Mayormente es un formato de imagen en el que las 3 primeras lineas son contenido sobre el formato de la imagen:


P2
100 100
255


P2 significa que la imagen se pondrá en codigo ascii y en escala de grises, la segunda linea es el ancho y el alto y la tercera es el máximo nivel de gris que se puede usar.

A partir de la cuarta linea se definirán los píxeles de la imagen con números del 0 al 255 (en este caso) separados por espacio o intro (el total de pixeles en este caso será de 10000 numeros del 0 al 255).

Después se pueden visualizar con gimp o con el comando display (viene con image magik). Un ejemplo de creación de una imagen completa en bash que te visualiza la imagen en pantalla (se puede ejecutar en el bash de linux) sería este:


(printf "P2\n90 90\n255\n"; I=0; while [ $I -lt 90 ]; do if [ $I -lt 30 ]; then II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "0 "; elif [ $II -lt 60 ]; then printf "255 "; else printf "0 ";  fi; II=$(($II+1)); done;  elif [ $I -lt 60 ]; then II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "0 "; elif [ $II -lt 60 ]; then printf "0 "; else printf "255 ";  fi; II=$(($II+1)); done;  else II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "255 "; elif [ $II -lt 60 ]; then printf "255 "; else printf "255 ";  fi; II=$(($II+1)); done;  fi; I=$(($I+1)); done; "0 255 0 0 0 255 255 255 255" )| display;


Si quieres guardar la imagen el proceso sería el siguiente:


(printf "P2\n90 90\n255\n"; I=0; while [ $I -lt 90 ]; do if [ $I -lt 30 ]; then II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "0 "; elif [ $II -lt 60 ]; then printf "255 "; else printf "0 ";  fi; II=$(($II+1)); done;  elif [ $I -lt 60 ]; then II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "0 "; elif [ $II -lt 60 ]; then printf "0 "; else printf "255 ";  fi; II=$(($II+1)); done;  else II=0; while [ $II -lt 90 ]; do if [ $II -lt 30 ]; then printf "255 "; elif [ $II -lt 60 ]; then printf "255 "; else printf "255 ";  fi; II=$(($II+1)); done;  fi; I=$(($I+1)); done; "0 255 0 0 0 255 255 255 255" ) > nombre.pgm;


Lo digo porque después puedes hacer tratamientos a imagenes y empezar a jugar con detectores de bordes sencillos y esas cosas. Haciendo cosas sencillas que después puede ver con un editor de imágenes.
Título: Re:crear imagen en lenguaje c
Publicado por: DeBobiPro en Junio 21, 2019, 09:48:56 AM
Hola!

Un pequeño consejo para que tu también puedas generar tu propio código que dibuje:

Escribe en un papel o en un block de notas, los pasos lógicos que harías tu para dibujar esas figuras, pero con un lápiz, por ejemplo:

Rectángulo:

1.- Consultaría el alto
2.- Consultaría el ancho
3.- Dibujaría tantos "ancho asteriscos" (tantos asteriscos según el valor del ancho) para la primera línea, debo realizar "altos" lineas ( una línea según la cantidad definida como alto)
4.- Para las siguientes "alto-2" lineas dibujaré un asterisco, luego "ancho-2" espacios y finalmente otro asterisco (ciclo repetitivo)
5.- finalmente repetiría el paso 3 para cerrar mi rectángulo




Ahora teniendo los anterior escrito en "Lenguaje humano" (que llamaremos algoritmo) trata de codificar cada paso en el mismo orden y revisa como te va resultando, puede que requieras ajustar algunos detalles como también puede que tu algoritmo haya funcionado al 100% de primera.

Coméntanos como te va :D!

Saludos!