Dividir figura em .pnm em fatias
Publicado por Sergio 06/05/2005
[ Hits: 5.366 ]
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; }
Retorna o número elevado ao quadrado
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)