c++ 读取、保存单张图片

转载:https://www.jb51.net/article/147896.htm

实际上就是以二进制形式打开文件,将数据保存到内存,在以二进制形式输出到指定文件。因此对于有图片的文件,也可以用这种方法复制其内容

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 void main(void)
 6 {
 7     //保存输入图像文件名和输出图像文件名
 8     char InImgName[10];
 9     char OutImgName[10];
10     //图像数据长度
11     int length;
12     //文件指针
13     FILE* fp;
14     //输入要读取的图像名
15     cout << "Enter Image name:";
16     cin >> InImgName;
17     //以二进制方式打开图像
18     if ((fp = fopen(InImgName, "rb")) == NULL)
19     {
20 
21         cout << "Open image failed!" << endl;
22         exit(0);
23     }
24     //获取图像数据总长度
25     fseek(fp, 0, SEEK_END);
26     length = ftell(fp);
27     rewind(fp);
28     //根据图像数据长度分配内存buffer
29     char* ImgBuffer = (char*)malloc(length* sizeof(char));
30     //将图像数据读入buffer
31     fread(ImgBuffer, length, 1, fp);
32     fclose(fp);
33     //输入要保存的文件名
34     cout << "Enter the name you wanna to save:";
35     cin >> OutImgName;
36     //以二进制写入方式
37     if ((fp = fopen(OutImgName, "wb")) == NULL)
38     {
39         cout << "Open File failed!" << endl;
40         exit(0);
41     }
42     //从buffer中写数据到fp指向的文件中
43     fwrite(ImgBuffer, length, 1, fp);
44     cout << "Done!" << endl;
45     //关闭文件指针,释放buffer内存
46     fclose(fp);
47     free(ImgBuffer);
48 }

猜你喜欢

转载自www.cnblogs.com/Toya/p/11405348.html