void convertImage(std::string fileIn, std::string fileOut, bool svs = false, std::string compression = "LZW", double quality = 70., double spacingX = -1.0, double spacingY = -1.0, unsigned int tileSize = 512) { MultiResolutionImageReader read; MultiResolutionImageWriter* writer; if (svs) { writer = new AperioSVSWriter(); } else { writer = new MultiResolutionImageWriter(); } if (core::fileExists(fileIn)) { MultiResolutionImage* img = read.open(fileIn); if (img) { if (img->valid()) { writer->setTileSize(tileSize); if (compression == string("LZW")) { writer->setCompression(LZW); } else if (compression == string("RAW")) { writer->setCompression(RAW); } else if (compression == string("JPEG")) { writer->setCompression(JPEG); } else if (compression == string("JPEG2000")) { writer->setCompression(JPEG2000); } else { cout << "Invalid compression, setting default LZW as compression" << endl; writer->setCompression(LZW); } if (quality > 100) { cout << "Too high rate, maximum is 100, setting to 100 (for JPEG2000 this is equal to lossless)" << endl; writer->setJPEGQuality(100); } else if (quality <= 0.001) { cout << "Too low rate, minimum is 0.001, setting to 1" << endl; writer->setJPEGQuality(1); } else { writer->setJPEGQuality(quality); } if (spacingX > 0.0 && spacingY > 0.0) { std::vector<double> overrideSpacing; overrideSpacing.push_back(spacingX); overrideSpacing.push_back(spacingY); writer->setOverrideSpacing(overrideSpacing); } CmdLineProgressMonitor* monitor = new CmdLineProgressMonitor(); monitor->setStatus("Processing " + fileIn); writer->setProgressMonitor(monitor); writer->writeImageToFile(img, fileOut); delete monitor; } else { cout << "Input file not valid" << endl; } } else { cout << "Input file not compatible" << endl; } } else { cout << "Input file does not exist" << endl; } }