fread,fopen二進制打開圖片並復制圖片


思路:

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

    8.          

          

 

     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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM