/* Program czyta zdjecia w formacie jpeg ze wskazanego katalogu * i tworzy album HTML w innym katalogu. * Z kazdego zdjecia tworzy miniaturke i zdjecie posredniej wielkosci. * Kompilacja: * cc tworz.c -L/usr/local/lib -lgd -o tworz * Uzycie: * chmod 700 tworz * ./tworz */ #include #include "gdfontl.h" #include "gdfonts.h" #include "gdfontg.h" #include #include #include #include #define LICZWIER 5 FILE *indhtml; FILE *ind1html; char buf[255]; char album[255]; char oryginal[255]; char nazalb[255]; char nazalb1[255]; char nazzdj[255]; char nazzdj1[255]; char nazwyj1[255]; char podpis[255]; int tr; // liczba miniaturek w wierszu void nagl_index(); void nagl_ind1(); /* Zmienne do manipulacji kartotekami*/ DIR *dp; struct dirent *ep; /*int main(argc,argv) int argc; char *argv[]; */ main() { FILE *fp; char p[255]; char nazwyj[31]; char nazwyj2[31]; /* Zmienne grafiki */ int x, y, n, m; char *err; gdImagePtr im; gdImagePtr im1; gdImagePtr im2; FILE *gifout; FILE *gifin; /* Utworz index.html */ printf("Podaj nazwe albumu : "); fgets(nazalb,40,stdin); if (strlen(nazalb)<1) strcat(nazalb,"Test"); printf("Podaj sciezke do oryginalnych zdjęć (./oryg): "); fgets(buf,40,stdin); if (strlen(buf)==1) strcat(oryginal,"./oryg/"); else { strcpy(oryginal,"./"); strcat(oryginal,buf); oryginal[strlen(oryginal)-1]='/'; } printf("Gdzie utworzyć album?(./album): "); fgets(buf,40,stdin); if (strlen(buf)==1) strcat(album,"./album/"); else { strcpy(album,"./"); strcat(album,buf); album[strlen(album)-1]='/'; } nagl_index(); /* Wczytaj zdjecia, zrob male i miniaturowe */ dp = opendir (oryginal); if (dp != NULL) { puts("Przetwarzam:\n"); while (ep = readdir (dp)) if(strcmp(ep->d_name,".")& strcmp(ep->d_name,"..")) { /* wczytaj oryginalne zdjecie */ strcpy(nazzdj, oryginal); strcat(nazzdj,ep->d_name); gifin=fopen(nazzdj, "r"); im = gdImageCreateFromJpeg(gifin); fclose(gifin); /* Utworz zdjecie posredniej wielkosci */ im1 = gdImageCreateTrueColor(800, (float)im->sy/(float)im->sx*800); gdImageCopyResized(im1, im, 0, 0, 0, 0, im1->sx, im1->sy, im->sx, im->sy); /* Zapisz w docelowym folderze oryginalne zdjecie */ strcpy(nazwyj, album); strcat(nazwyj,ep->d_name); gifout = fopen(nazwyj, "wb"); gdImageJpeg(im, gifout, -1); fclose(gifout); /* Zapisz zdjecie posredniej wielkości */ strcpy(nazwyj, album); strcat(nazwyj,"med_"); strcat(nazwyj,ep->d_name); gifout = fopen(nazwyj, "wb"); gdImageJpeg(im1, gifout, -1); fclose(gifout); gdImageDestroy(im1); /* Utworz strone HTML z obrazkiem */ strcpy(nazwyj1, album); strcat(nazwyj1,"med_"); /* Zapytaj o podpis pod zdjeciem */ printf("Podpis pod zdjeciem %s: ", ep->d_name); fgets(podpis,250,stdin); strcat(nazwyj1,ep->d_name); strcat(nazwyj1,".html"); nagl_ind1(); strcpy(nazwyj, "./"); strcat(nazwyj,"med_"); strcat(nazwyj,ep->d_name); fprintf(ind1html, " \
%s \
\n", ep->d_name, nazwyj, podpis); /* dopisz koniec strony z obrazkiem i zamknij ja */ fprintf(ind1html," \n\
\n\ \n\ "); fclose(ind1html); // \" width=\"520\" height=\"520\">
%s \ /* Utworz miniaturke */ im2 = gdImageCreateTrueColor(160, (float)im->sy/(float)im->sx*160); gdImageCopyResized(im2, im, 0, 0, 0, 0, im2->sx, im2->sy, im->sx, im->sy); strcpy(nazwyj, "./"); strcat(nazwyj,"sm_"); strcat(nazwyj,ep->d_name); strcpy(nazwyj1, "./"); strcat(nazwyj1,"med_"); strcat(nazwyj1,ep->d_name); strcat(nazwyj1,".html"); /* Utworz link do obrazka */ fprintf(indhtml, " \
%s \
\n", nazwyj1, nazwyj, podpis); tr++; if ( tr == LICZWIER ) {tr=0; fprintf(indhtml, "\n"); } gdImageDestroy(im); /* zapisz miniaturke */ strcpy(nazwyj2, album); strcat(nazwyj2,"sm_"); strcat(nazwyj2,ep->d_name); gifout = fopen(nazwyj2, "wb"); gdImageJpeg(im2, gifout,-1); fclose(gifout); gdImageDestroy(im2); } (void) closedir (dp); } else puts ("Couldn't open the directory."); /* dopisz koniec index,html i zamknij go */ fprintf(indhtml," \n\
\n\ \n\ "); fclose(indhtml); puts("Gotowe!\n"); } void nagl_index() { strcpy (nazalb1, album); strcat (nazalb1, "index.html"); indhtml=fopen(nazalb1,"wb"); fprintf(indhtml, "\n\n\n",nazalb); fprintf(indhtml," \n\ \n\ \n"); fprintf(indhtml,"\n"); fprintf(indhtml, "

"); fprintf(indhtml, "%s

\n",nazalb); fprintf(indhtml,"\n"); tr=0; } void nagl_ind1() { ind1html=fopen(nazwyj1,"wb"); fprintf(ind1html, "\n\n\n",podpis); fprintf(ind1html," \n\ \n\ \n"); fprintf(ind1html,"\n"); fprintf(ind1html, "

"); fprintf(ind1html, "%s

\n",podpis); fprintf(ind1html,"
\n"); }