とりあえずmacOSアプリとiOSアプリに必要なアイコン類を作成できるようにしました。画像処理ライブラリとしてOpenCV(開発はインテル)を使っています。用意するのは2048*2048のpngファイルだけです。
iOSに必要なContents.jsonは前もってホームディレクトリに配置したものをコピーしました。
#include <opencv2/opencv.hpp>
void makeIcnsIOS(const char* filename){
// AppIcon.appiconsetパス作成
string path_str = string(filename);
char del = '/';
vector<string> list = split(path_str, del);
string imagename = list.back();
list.pop_back();
const char* del2 = "/";
string prefix = join(list,del2);
string dir = prefix + "/" + "AppIcon.appiconset";
cout<<"dir "<<dir<<endl;
// iconsetディレクトリ作成
mkdir(dir.c_str(),
S_IRUSR | S_IWUSR | S_IXUSR | // USR RWX
S_IRGRP | S_IWGRP | S_IXGRP | // GRP RWX
S_IROTH | S_IWOTH | S_IXOTH); // OTH RWX
// 各種pngファイル作成
int pixels[19] = {20, 29, 40, 50, 57, 58, 60, 72, 76, 80, 87, 100, 114, 120, 144, 152, 167, 180, 1024};
string filenames[19] = {"20.png","29.png","40.png","50.png","57.png","58.png","60.png","72.png","76.png","80.png","87.png","100.png","114.png","120.png","144.png","152.png","167.png","180.png","1024.png"};
int num = 0;
for (int pixel:pixels){
cv::Mat img,img_resize;
img = cv::imread(filename,cv::IMREAD_UNCHANGED);
cv::resize(img,img_resize, cv::Size(pixel,pixel),0,0,cv::INTER_LINEAR);
// リサイズファイルパス作成
string filename2 = filenames[num];
string filepath = dir + "/" + filename2;
cv::imwrite(filepath, img_resize);
num += 1;
}
// JSONファイルコピー
std::string jsonname1 = "/Users/[ユーザID]/ImageInspector/Contents.json";
std::string jsonname2 = prefix + "/AppIcon.appiconset/Contents.json";
system(("cp " + jsonname1 + " " + jsonname2).c_str());
}