#include #include #include #include //convert label.png -virtual-pixel White -distort Arc 60 arctest.png //convert -background gray -fill cyan -pointsize 72 label:Alex label.png //convert label.png -virtual-pixel white -distort Barrel "0.2 0.0 0.0 1.0" barrel.png #define ADJNUM 200 #define NOUNUM 1524 #define AVGADJ 7 #define AVGNOU 7 #define LONGADJ 14 #define LONGNOU 15 void createRandomWords(char* buf){ long adjnum = rand() % ADJNUM; long nounum = rand() % NOUNUM; FILE* adjfile; FILE* noufile; adjfile = fopen("../ws2a/adj.txt","r"); noufile = fopen("../ws2a/nouns.txt","r"); //Instead of getting a particular line, seek an average length, and find the next word. if(adjfile == NULL || noufile == NULL){ printf("Something has gone serirously wrong!"); } fseek(adjfile,adjnum*AVGADJ,0); fseek(noufile,nounum*AVGNOU,0); while(fgetc(adjfile) != '\n'){} while(fgetc(noufile) != '\n'){} int pos = 0; char tchar = fgetc(adjfile); do{ buf[pos] = tchar; pos++; tchar = fgetc(adjfile); }while(tchar != '\n'); buf[pos] = ' '; pos++; tchar = fgetc(noufile); do{ buf[pos] = tchar; pos++; tchar = fgetc(noufile); }while(tchar != '\n'); buf[pos] = '\0'; } int main(){ srand(time(NULL)); char randwords[LONGADJ+LONGNOU+1]; createRandomWords(randwords); int barraldis1 = rand()%10; int barraldis2 = rand()%10; int arcdis = (rand()%99)+1; char command[1024]; sprintf(command,"convert -background white -fill black -pointsize 48 label:\"%s\" \"../ws2a/captchas/%s.png\"",randwords,randwords); system(command); sprintf(command,"convert \"../ws2a/captchas/%s.png\" -distort Barrel \"0.0%d 0.0 0.0%d\" \"../ws2a/captchas/%s.png\"",randwords,barraldis1,barraldis2,randwords); system(command); sprintf(command,"convert \"../ws2a/captchas/%s.png\" -virtual-pixel White -distort Arc %d \"../ws2a/captchas/%s.png\"",randwords,arcdis,randwords); system(command); sleep(1); FILE* imgfile; char filepath[100]; sprintf(filepath,"../ws2a/captchas/%s.png",randwords); //printf("Filepath:%s",filepath); imgfile = fopen(filepath,"rb"); if(imgfile == NULL){ printf("Unable to open file!"); return 1; } fseek(imgfile,0,SEEK_END); unsigned long filelen = ftell(imgfile); //printf("File length:%lu",filelen); fseek(imgfile,0,SEEK_SET); //fwrite(imgfile,1,filelen,stdout); char* buffer = malloc(filelen+1); if(buffer == NULL){ printf("Memory error!"); return 1; } fread(buffer, filelen, 1, imgfile); int i = 0; while(i < filelen){ printf("%c",buffer[i]); i++; } free(buffer); /* char c; while((c = fgetc(imgfile)) && !feof(imgfile)){ printf("char is:something\n",c); //putchar(c); } */ }