#include #include #include "../rawimage.h" #include "../loadimage.h" bool OpenGLES = false; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QCommandLineParser parser; parser.addOption({{"s", "size"}, "Size of the thumbnail in pixels (default: 128)", "size", "128"}); parser.addPositionalArgument("input", "Input image file"); parser.addPositionalArgument("output", "Output image file"); parser.addHelpOption(); parser.process(a); QStringList args = parser.positionalArguments(); if(args.size() < 2) return 1; QString input = args[0]; QString output = args[1]; ImageInfoData info; std::shared_ptr rawImage; if(!loadImage(input, info, rawImage)) return 2; if(!rawImage) return 3; bool ok; int size = parser.value("s").toInt(&ok); if(!ok) size = 128; QSize rect(rawImage->width(), rawImage->height()); rect.scale(size, size, Qt::KeepAspectRatio); rawImage->calcStats(); rawImage->resize(rect.width(), rect.height()); if(rawImage->imageStats().m_median[0] < rawImage->norm() * 0.2f) { MTFParam mtfParams = rawImage->calcMTFParams(true); rawImage->applySTF(mtfParams); } rawImage->convertToType(RawImage::UINT8); QImage img; if(rawImage->channels() == 1) img = QImage((const uchar*)rawImage->data(), rawImage->width(), rawImage->height(), rawImage->widthBytes(), QImage::Format_Grayscale8); else img = QImage((const uchar*)rawImage->data(), rawImage->width(), rawImage->height(), rawImage->widthBytes(), QImage::Format_RGBA8888); if(!img.save(output, "png")) return 4; return 0; }