crear imagen en lenguaje c

Iniciado por elman, Junio 20, 2019, 09:50:49 PM

Tema anterior - Siguiente tema

0 Miembros y 3 Visitantes están viendo este tema.

Junio 20, 2019, 09:50:49 PM Ultima modificación: Junio 21, 2019, 12:15:05 AM por Gabriela
hola, podrian ayudarme a realizar estas imagenes en lenguaje c, estoy iniciando a aprender y me gustaria que me dieran una ayudita
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Junio 20, 2019, 11:35:01 PM #1 Ultima modificación: Junio 20, 2019, 11:36:49 PM por Kirari
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.

Código: php

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

¿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:

Código: php

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:

Código: php

(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:

Código: php

(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.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

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!
Nivel 77 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta