Skip to content

Instantly share code, notes, and snippets.

@hxhb

hxhb/replace_image.cpp Secret

Last active May 29, 2020
Embed
What would you like to do?
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <initializer_list>
#include "fileList.h"
using namespace std;
bool split(const std::string& InPath,std::string& OutDir,std::string& OutName,std::string& OutExtension)
{
bool status = false;
size_t r_slash_index = InPath.find_last_of('\\');
if(r_slash_index != std::string::npos)
{
std::string directory(InPath,0,r_slash_index);
std::string name(InPath,r_slash_index+1,InPath.size()-r_slash_index);
std::string extension;
size_t last_dot_index = name.find_last_of('.');
if(last_dot_index!=std::string::npos)
{
extension = std::string(name,last_dot_index+1,name.size()-last_dot_index);
name = std::string(name,0,last_dot_index);
}
OutDir = directory;
OutName = name;
OutExtension = extension;
status = true;
}
return status;
}
#define SHOW_REPLACED_MESSAGE 0
int main(int argc,char*argv[]){
vector<string> fileTypeList{".png",".jpg"};
std::string searchPath;
if(argc > 1)
{
searchPath = std::string(argv[1]);
}
else
{
searchPath = fileList::getExecAbsPath();
}
std::cout<<"Search path:"<<searchPath<<std::endl;
fileList search(searchPath,fileTypeList);
search.start();
auto GenWebpLambda = [](const std::vector<std::string>& in_file_list)
{
for(const auto& index : in_file_list)
{
std::string dir,name,extension;
if(split(index,dir,name,extension))
{
// cout<<"dir:"<<dir<<"\tfilename:"<<name<<"\textension:"<<extension<<endl;
std::string result = dir+"\\"+name+".webp";
fstream _file;
_file.open(result,ios::in);
if(!_file)
{
std::string command = "cwebp -q 85 "+index+" -o "+result;
cout<<command<<endl;
system(command.data());
}
else
{
#if SHOW_REPLACED_MESSAGE
cout<<index<<" is replicated"<<endl;
#endif
}
}
}
};
for(const auto& extension:fileTypeList)
{
cout<<"replacing "<<extension<<" as webp..."<<endl;
const auto& foundfileList = search.getTypeMatchFileList(extension);
GenWebpLambda(foundfileList);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.