fread,fopen二进制打开图片并复制图片
Posted jianmoxiansheng-guo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fread,fopen二进制打开图片并复制图片相关的知识,希望对你有一定的参考价值。
思路:
- 使用二进制的格式打开我们要读取的图片“./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 ----%ld",buffer,strlen(buffer)); 23 fwrite(buffer,sizeof(BYTE),length,fp); 24 } 25 26 fclose(pixmap); 27 fclose(fp); 28 }
以上是关于fread,fopen二进制打开图片并复制图片的主要内容,如果未能解决你的问题,请参考以下文章
Linux 打开文件并写入一段字符串,同一时候读出相应文件的信息--fopen()/fwrite()/fread()