#include<io.h>
#include<iostream>
#include<vector>
#include <fstream>
using namespace std;
void get_image_names(std::string file_path, std::vector<std::string>& file_names)
{
intptr_t hFile = 0;
_finddata_t fileInfo;
hFile = _findfirst(file_path.c_str(), &fileInfo);
if (hFile != -1) {
do {
file_names.push_back(fileInfo.name);
cout << fileInfo.name << endl;
}
while (_findnext(hFile, &fileInfo) == 0);
_findclose(hFile);
}
}
void read_img(std::vector<std::string>& file_names)
{
for (int i = 0; i < file_names.size(); i++)
{
ifstream f; // 读取图像
f.open("img/"+file_names[i], ios::in | ios::binary);
f.seekg(0, ios::end); // 计算长度,将文件指针移动到文件末尾
int length = f.tellg(); // 返回文件指针的位置
cout << "图像数据总字节数:" << length << endl;
f.seekg(0, ios::beg);
//根据图像数据长度分配内存buffer
char* ImgBuffer = new char[length];
f.read((char *)ImgBuffer, length * sizeof(char));
f.close();
ofstream out; // 读取图像
out.open("img/gg2.jpg", ios::out | ios::binary);
out.write((const char*)ImgBuffer, length * sizeof(char)); //从buffer中写数据到out指向的文件中
//关闭文件指针,释放buffer内存
out.close();
delete[]ImgBuffer;
}
}
int main()
{
std::vector<std::string> file_names;
get_image_names("./img/*.jpg", file_names);
read_img(file_names);
system("pause");
return 0;
}
//#include <iostream>
//#include <fstream>
//
//using namespace std;
//
//int main(int argc, char* argv[])
//{
// ifstream f; // 读取图像
// f.open("img/test.jpg", ios::in | ios::binary);
//
// f.seekg(0, ios::end); // 计算长度,将文件指针移动到文件末尾
// int length = f.tellg(); // 返回文件指针的位置
// cout << "图像数据总字节数:" << length << endl;
// f.seekg(0, ios::beg);
//
// //根据图像数据长度分配内存buffer
// char* ImgBuffer = new char[length];
// f.read((char *)ImgBuffer, length * sizeof(char));
// f.close();
//
// ofstream out; // 读取图像
// out.open("img/gg.jpg", ios::out | ios::binary);
// out.write((const char*)ImgBuffer, length * sizeof(char)); //从buffer中写数据到out指向的文件中
//
// //关闭文件指针,释放buffer内存
// out.close();
// delete[]ImgBuffer;
// return 0;
//}
C++ 读取文件夹图片的方法
最新推荐文章于 2024-03-15 09:55:26 发布