读取文件,再写入到另一个文件里面:

1、获取文件大小

1
2
3
4
5
FILE* fp_size = fopen("T:/img.jpg", "rb");
fseek(fp_size, 0, SEEK_END);
int size = ftell(fp_size);
fclose(fp_size);
cout << "文件大小(指针偏移计算):" << size; // 字节大小

2、读取文件

1
2
3
4
FILE* fp_read = fopen("T:/img.jpg", "rb");
int* buffer = (int*)malloc(size+4); // 可以改成其他类型也没事,比如 char*
fread(buffer, size, 1, fp_read);
fclose(fp_read);

3、写入到另一个文件

1
2
3
FILE* fp_write = fopen("T:/img1.png", "wb");
fwrite(buffer,size, 1, fp_write);
fclose(fp_write);

freadwritesize可以更大,不影响结果(表示上限)


实测一张jpg图片:

  • size超过体积,保存的会是size的大小
  • 1/10时:图片只有一半显示,体积也只有1/10
  • 1/4时:上方5/6的部分清晰,剩下的模糊
  • 1/2时:虽然体积只有一半,但是好像一样清晰……