• 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
    ----%ld",buffer,strlen(buffer));
    23             fwrite(buffer,sizeof(BYTE),length,fp);
    24     }
    25 
    26     fclose(pixmap);
    27     fclose(fp);
    28 }
  • 相关阅读:
    *Integer to English Words
    *Palindrome Linked List
    *Partition List
    Sort Colors
    wireshark tls
    find 路径必须在表达式之前
    http://mozilla.debian.net/
    maven bundle
    xmpp
    xmlns=""
  • 原文地址:https://www.cnblogs.com/jianmoxiansheng-Guo/p/12906309.html
Copyright © 2020-2023  润新知