Dividir figura em .pnm em fatias
Publicado por Sergio 06/05/2005
[ Hits: 5.508 ]
Este programa dado uma imagem *.pnm em formato p2 (grayscale) faz a divisao em N x M subfiguras. As imagens de saida cujo prefixo para as imagesns de saida e xxx sao colocadas em N x M ficheiros cahamados xxx.1.1.pnm xxx.1.2.pnm ... ... exemplo : divide 2 4 img.pnm out
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXCOL 140 void divide (char *argv[],FILE *f) { FILE *z; int i=0,j,colunas,linhas,imgL,imgA,k,ncoluna=0,nlinha=0,b,v,pixel; char string [100],strler[100],s[10]; while (fgets (strler,100,f)!=NULL) { if (strler[0]!='#') i++; if (i==1) fscanf (f,"%d %d", &imgL, &imgA); } rewind (f); if (atoi (argv[1])>imgA || imgA%atoi (argv[1])!=0 || atoi (argv[2])>imgL || imgL%atoi (argv [2])!=0) { fprintf(stderr,"erro, insira multiplos da altura e largura da imagem\n"); exit(2); } for (i=1;i<=atoi (argv [1]);i++) for (j=1;j<=atoi (argv [2]);j++) { sprintf (string, "%s.%d.%d.pnm", argv[4], i, j); if ((z=fopen (string,"a+"))==NULL) { fprintf (stderr, "erro a abrir o ficheiro %s",string); exit (2); } k=0; while ((fgets (strler,100,f)!=NULL) && k<=2) { if (strler[0]!='#') { if (k==0) fputs (strler,z); if (k==1) fprintf (z,"%d %d\n",imgL/(atoi (argv[2])),imgA/(atoi (argv[1]))); if (k==2) fputs (strler,z); k++; } else fputs (strler,z); } for (v=nlinha;v<(imgA/(atoi (argv[1]))+nlinha) && (fgets (strler,100,f)!=NULL);v++) { for (b=ncoluna;b<(imgL/(atoi (argv[2]))+ncoluna) ;b++) { fscanf (f," %d", &pixel); fflush (f); sprintf (s,"%d ",pixel); fputs (s,z); } fputc ('\n',z); } nlinha+= imgA/(atoi (argv[1])); ncoluna+= imgL/(atoi (argv[2])); rewind (f); fclose (z); } } int main (int argc, char **argv) { FILE *f; char s[MAXCOL]; if (argc !=5) fprintf (stderr, "erro de sintaxe em %s", argv [0]); if ((f=fopen(argv[3],"r"))==NULL) fprintf (stderr, "erro a abrir o ficheiro %s", argv[3]); divide (argv,f); return 0; }
Estrutura de dados em C -> Fila Circular com operador módulo
Conta e substitui caracteres de uma frase
Ordenar vetor com algoritmo Insertion Sort
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Debian 13 "trixie&... lançado! (44)
Rust é o "C da nossa geração"? (3)
Gerenciador de arquivos é finalizado ao abrir pasta específica (2)