Manipulador de Imagens - Microphotoshop
Faremos um programa que:
-Processará essa imagem, como por exemplo:
-Aumentar brilho (*)
-Diminuir brilho
-Aumentar contraste (*)
-Diminuir contraste
-Desfocar (*)
-Fazer moldura
-Girar para a esquerda
-Girar para a direita (*)
-Espelhar horizontalmente (*)
-Espelhar verticalmente
-Reforçar canais específicos de cores (R, G, B) para imagens coloridas (veja codigo_exemplo2.c)
-Gravará a imagem alterada em arquivo (já feito)
(*) veja em dicas
Tudo será feito agens em escala depara im cinza inicialmente (padrão P2, extensão .pgm), conforme o codigo_exemplo.c aqui presente. Preferencialmente, usem o código codigo_exemplo_simplificado.c.
Depois, usaremos imagens coloridas (padrão P3, extensão .ppm), conforme o codigo_exemplo2.c.
Para uma descrição dos formatos, veja o artigo da Wikipedia.
Software:
Para quem usa Windows:
1) Vamos usar o Gimp Portável, que pode ser baixado do link:
https://portableapps.com/apps/graphics_pictures/gimp_portable
2) Alternativamente, você pode instalar a versão convencional:
https://download.gimp.org/pub/gimp/v2.10/windows/gimp-2.10.20-setup.exe
Exercícios:
Estes são exercícios que caíram em provas passadas:
#FicaADica
1) Faça uma função que crie uma figura de uma bandeira existente:
https://thumbs.dreamstime.com/b/bandeiras-de-pa%C3%ADses-13821928.jpg
Dicas:
-Pense numa imagem de 200 linhas por 300 colunas.
-Para facilitar sua vida, escolha uma bandeira como a do Chade (3 listras verticais: azul, amarelo e vermelho), a da Costa do Marfim (3 listras verticais: laranja, branco e verde), a da França (3 listras verticais: azul, branco e vermelho), etc.
2) Faça uma função que crie uma figura semelhante a isto:
= = = = = = = = = = =
=
= = = = = = = =
= = =
= = = = = =
= = = = =
= = = =
= = = = = = =
= =
= = = = = = = = =
3) Faça uma função recursiva que pinte uma imagem de branco. Ela seria mais ou menos assim:
{ ....
}
Dicas:
-Se a coordenada inicioX ou inicioY estiver fora da imagem, que tem dimensões 'linhas' e 'colunas', nada será feito
-Se na coordenada (inicioX, inicioY) já houver o tom branco (maxValor), nada será feito
-Se na coordenada (inicioX, inicioY) não houver o tom branco, pinto com essa cor (maxValor)
-Invoco o procedimento recursivo para a coordenada de cima, de baixo, da esquerda e da direita
-Pronto!!!
Resposta:
{ if(inicioX>=0 && inicioX<linhas && inicioY>=0 && inicioY<colunas && original[inicioX][inicioY] != maxValor)
{ original[inicioX][inicioY] = maxValor;
pintarBranco(original, linhas, colunas, maxValor, inicioX+1, inicioY);
pintarBranco(original, linhas, colunas, maxValor, inicioX-1, inicioY);
pintarBranco(original, linhas, colunas, maxValor, inicioX, inicioY-1);
pintarBranco(original, linhas, colunas, maxValor, inicioX, inicioY+1);
}
}
Comentários
Postar um comentário