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.028 ]
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
DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C
Manipulando arquivos em C (parte 2)
Manipulando arquivos em C (parte 1)
Manipulação de arquivos em C++
Linguagem C - Listas Duplamente Encadeadas
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Falha com leitor de digitais no Ubuntu: sugestões? (0)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (1)