看板 Knuckles
作者 標題 DIP作業四
時間 2007年12月10日 Mon. PM 10:40:39
讀取助教給的文字檔ballon.txt
轉為圖檔的方法:
int ch,i=0,count=0; char tmp[10]={0}; int size[2]={0}; //size[0]=width, size[1]=height FILE *fp = fopen("ballon.txt","r"); if(!fp){ printf("read file error!"); return; } //先將檔案開頭的width與height讀進size while(1){ ch = getc(fp); //依序讀取一個字元存進ch if(ch != ',' && ch !='\n'){ tmp[i] = ch; //ch為數字時,先依序存進tmp i++; }else{ //ch為','或'\n'時,將tmp由char轉為int size[count]=atoi(tmp); //存進size count++; for(i=0;i<10;i++) tmp[i]=0; //清空tmp i=0; } if(ch == '\n') break; //ch為換行字元就結束 } printf("width=%d,height=%d\n",size[0],size[1]); CImage img1; int width = size[0]; int height = size[1]; img1.Create(width,height,24); i=0; count=0; //代表目前為第幾個pixel int k=0; //代表目前為pixel的哪一個顏色(0:red,1:green,2:blue) int x,y; //代表目為的pixel為第y列、第x行 BYTE value[3]; //將色彩值存進img1 while(1){ ch = getc(fp); //依序讀取一個字元存進ch if(ch != ',' && ch != '\n' && ch != EOF){ tmp[i] = ch; //ch為數字時,先依序存進tmp i++; //讀下一個字元 }else{ //ch為','、'\n'或EOF時,將tmp由char轉為int value[k] = atoi(tmp); //存進value k++; //讀下一個色彩值 for(i=0;i<10;i++) tmp[i]=0; //清空tmp i=0; } if(ch == '\n'){ //ch為換行字元時,將得到的三個色彩值存進img1 x = count%width; //求出目前的pixel為圖檔的第幾行(column) y = count/width; //求出目前的pixel為圖檔的第幾列(row) img1.SetPixel(x,y,RGB(value[0],value[1],value[2])); count++; //讀下一個pixel k=0; } if(ch == EOF) break; //ch為檔案結尾即結束 } fclose(fp); //關閉檔案 img1.SaveBmpFile("image.bmp"); printf("已將文字檔轉為圖檔,檔名為:image.bmp\n");![[圖]](http://knuckles.twbbs.org/course/DIP/hw4_image.jpg)
--
※ 來源: 台大電信 DISP 實驗室 (http://disp.twbbs.org)
※ 作者: Knuckles 來自: 140.112.175.130 時間: 2007-12-10 22:40:39
※ 編輯: Knuckles 來自: 140.112.175.130 時間: 2009-05-31 15:19:19
※ 編輯: Knuckles 時間: 2010-10-23 04:41:48 來自: 111-248-0-184.dynamic.hinet.net
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 571
回列表(←)
分享