Dividir figura em .pnm em fatias
Publicado por Sergio 06/05/2005
[ Hits: 5.591 ]
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;
}
Rotacionamento de um Retângulo utilizando herança
Cálculo de Energia de um Corpo
Meu primeiro programa em C (Olá mundo)
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Secure boot, artigo interessante, nada técnico. (5)
VOL já não é mais como antes? (9)
É normal não gostar de KDE? (13)
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









