[Exercícios] [Desafio#2] [Intermediário]- Manipulando imagens em C

Neste desafio vamos tentar gerar imagens a partir de um programa escrito na linguagem C. Para geração desta imagem utilizaremos o formato PGM (Portable Gray Map). Este formato foi desenvolvido para descrever uma imagem em escala de cinza (preto e branco) e para ser fácil de implementar programas que o manipulam.

De forma simplificada, um arquivo no formato plain PGM contém os seguintes dados:

  • Um “número mágico” para identificar o tipo de arquivo, aqui o número mágico será "P2".
  • O caractere # seguido pelo nome do arquivo.
  • A dimensão da imagem, ou seja, a quantidade de colunas (largura) e a quantidade de linhas
  • (altura) da imagem.
  • O maior valor possivel para o nível de cinza.
  • Uma matriz que representará a imagem.

Prática 01:

Faça um exemplo "na mão". 

Salve este conteúdo em um arquivo txt:


P2
# feep.pgm
24 7
15
0   0   0   0   0   0   0   0   0   0   0   0   0  0   0   0   0   0   0   0   0   0   0   0
0   3   3   3   3   0   0   7   7   7   7   0   0  11 11 11 11   0   0  15 15 15 15 0
0   3   0   0   0   0   0   7   0   0   0   0   0  11  0   0   0   0   0   15 0 0 15    0
0   3   3   3   0   0   0   7   7   7   0   0   0  11 11 11  0   0   0   15 15 15 15 0
0   3   0   0   0   0   0   7   0   0   0   0   0  11  0   0   0   0   0   15  0  0  0   0
0   3   0   0   0   0   0   7   7   7   7   0   0  11 11 11 11   0   0   15   0  0  0  0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0  0


Depois de salvar, altere a extensão deste arquivo para pgm abra-o com o photoshop ou outro editor de imagens que aceite este formato. Veja só como você deverá ver esta imagem:



Prática 02

Implemente um programa com as seguintes utilizando as seguintes assinaturas:


# ifndef PGM_H
# define PGM_H
# define MAX_LARGURA 1024
# define MAX_ALTURA 768

struct img {
      int largura;
      int altura;
      int niveisDeCinza;
      int I[MAX_ALTURA][MAX_LARGURA];
};

typedef struct img * Imagem;

Imagem novaImagem (int largura, int altura, int niveisDeCinza);

void destroiImagem (Imagem a);


void desenhaPonto (Imagem img, int x, int y, int cor);

void desenhaReta (Imagem img, int x0, int y0, int x1, int y1, int cor);

void salvaImagem (Imagem img, char *nomeArquivo);

# endif



Ao fim da escrita deste programa desenhe crie uma aplicação que cria um arquivo PGM que contém uma linha reta.

[Exercícios] [Desafio#2] [Intermediário]- Manipulando imagens em C [Exercícios] [Desafio#2] [Intermediário]- Manipulando imagens em C Reviewed by Vinicius dos Santos on 10:56:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!