思路:
- 使用二進制的格式打開我們要讀取的圖片“./temp.png”,注意讀取的格式“rb”,b:二進制
- 接着就可以創建並以二進制的格式打開我們要寫入到的文件當中“\.png”,注意打開格式”wb“。
- 接着我們用fseek來測量這個圖片一共有多少個字節:
- 我們可以把光標設置到文件的尾部。
- 接着使用ftell()函數來獲取長度length。
- 注意,由於我們還要讀取文件,所以要把光標設置回文件的開頭。
- 接着使用fread讀取:
- 每次讀取BYTE為要讀取的每個元素的大小,以字節為單位。
- length:這是元素的個數,每個元素的大小為BYTE 字節。
- 因為我使用的是ubuntu,所以沒有BYTE這個數據類型,所以需要自己define。
- 接着就是fwrite,和read參數大致意思一樣。
- 最后:注意close你已經打開的文件
- 看一下我成功之后的結果:


8. 圖片這里就不展示了,當然是成功的。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define BYTE unsigned char 5 int main(){ 6 BYTE *buffer; 7 8 FILE *pixmap = fopen("./temp.png","rb"); 9 10 fseek(pixmap,0, SEEK_END); 11 12 13 int length = ftell(pixmap);//讀取圖片的大小長度 14 FILE *fp = fopen("./t.png","wb"); 15 16 buffer = (BYTE *)malloc(length*sizeof(BYTE)); 17 18 fseek(pixmap, 0, SEEK_SET);//把光標設置到文件的開頭 19 20 while(0 !=fread(buffer,sizeof(BYTE),length,pixmap)) 21 { 22 printf("%s\n----%ld",buffer,strlen(buffer)); 23 fwrite(buffer,sizeof(BYTE),length,fp); 24 } 25 26 fclose(pixmap); 27 fclose(fp); 28 }
