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 }

猜你喜欢

转载自www.cnblogs.com/jianmoxiansheng-Guo/p/12906309.html