Manipulação de imagens no formato PPM
O artigo seguinte faz uma introdução sobre o formato ".ppm", que faz o armazenamento de forma simples e "bruta" de imagens. Além de como manipular o arquivo, para podermos aplicar filtros de imagem já existentes ou criar nossos próprios filtros.
[ Hits: 33.082 ]
Por: Pablo Margreff em 16/01/2015 | Blog: https://pmargreff.wordpress.com/
#include#include #define MAX 500 typedef struct { int r, g, b; } pixel; int main(int argc, char** argv) { pixel imagem[MAX][MAX]; //cria uma matriz de pixeis para armazenar a imagem char code[3]; //o código para saber se a imagem é ascii ou binária int max; //o valor máximo de tonalidade de cada pixel int larg, alt; // largura e altura da imagem em pixeis return 0; }
void ler_ascii(pixel imagem[MAX][MAX], char *code, int *max, int *coluna, int *linha) {
int i, j;
FILE *arquivo;
char nome_arq[50];
printf("entre com o nome do arquivo\n");
scanf("%s", nome_arq);
if ((arquivo = fopen(nome_arq, "r")) == NULL) {
printf("Erro ao abrir o arquivo %s\n", nome_arq);
exit(1);
}
fscanf(arquivo, "%s", code);
fscanf(arquivo, "%d", coluna);
fscanf(arquivo, "%d", linha);
fscanf(arquivo, "%d", max);
for (i = 0; i < *linha; i++) {
for (j = 0; j < *coluna; j++) {
fscanf(arquivo, "%d", &imagem[i][j].r);
fscanf(arquivo, "%d", &imagem[i][j].g);
fscanf(arquivo, "%d", &imagem[i][j].b);
}
}
fclose(arquivo);
}
void salvar_ascii(pixel imagem[MAX][MAX], char *code, int max, int coluna, int linha) {
int i, j;
FILE *arquivo;
char nome_arq[50];
printf("entre com o nome que deseja salvar: \n");
scanf("%s", nome_arq);
arquivo = fopen(nome_arq, "w");
fprintf (arquivo, "P3\n");
fprintf (arquivo, "%d\n ", coluna);
fprintf (arquivo, "%d\n", linha);
fprintf (arquivo, "%d\n", max);
for (i = 0; i < linha; i++) {
for (j = 0; j < coluna; j++) {
fprintf(arquivo, "%d ", imagem[i][j].r);
fprintf(arquivo, "%d ", imagem[i][j].g);
fprintf(arquivo, "%d\n", imagem[i][j].b);
}
}
fclose(arquivo);
}
Aumentando sua produtividade com o teclado padrão Dvorak
Manipulando arquivos em C (parte 2)
Manipulando arquivos em C (parte 1)
DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C
Manipulação de arquivos em C++
Gerencie suas contas financeiras pessoais com Terminal Finances
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









