void CDPWizard::variableDone(QString theFileNameString) { std::cout << " ---------------- Variable " << theFileNameString << " written! " << std::endl; QFileInfo myQFileInfo(theFileNameString); //convert the completed variable layer to an image file ImageWriter myImageWriter; if (cbxPseudoColour->isChecked()) { QString myImageFileNameString = myQFileInfo.dirPath()+"/"+myQFileInfo.baseName()+".png"; myImageWriter.writeImage(theFileNameString,myImageFileNameString); //set the image label on the calculating variables screen to show the last //variable calculated QPixmap myPixmap(myImageFileNameString); pixmapLabel2->setScaledContents(true); pixmapLabel2->setPixmap(myPixmap); } if (cbxMeridianSwitch->isChecked()) { //spit the filename up so we can rename it for the meridian shift QString myMSFileNameString = myQFileInfo.dirPath()+"/"+myQFileInfo.baseName()+"MS."+myQFileInfo.extension(); //perform the meridian shift (hard coding for now but we should have a class member //boolean that stores whether this is needed MeridianSwitcher mySwitcher; mySwitcher.doSwitch(theFileNameString,myMSFileNameString); if (cbxPseudoColour->isChecked()) { //make an image for the shifted file too QFileInfo myQFileInfo2(myMSFileNameString); QString myImageFileNameString = myQFileInfo2.dirPath()+"/"+myQFileInfo2.baseName()+".png"; myImageWriter.writeImage(myMSFileNameString,myImageFileNameString); //set the image label on the calculating variables screen to show the last //variable calculated QPixmap myPixmap(myImageFileNameString); pixmapLabel2->setScaledContents(true); pixmapLabel2->setPixmap(myPixmap); } } progressTotalJob->setProgress(progressTotalJob->progress()+1); //update the elapsed time QString myLabelString; myLabelString.sprintf("<p align=\"right\">Time elapsed: %d s</p>", startTime.elapsed()/1000); lblElapsedTime->setText(myLabelString); qApp->processEvents(); }
int ForceRGBCommand::run(const char** args, unsigned int numArgs) { if ( numArgs < 2 ) { fprintf(stderr, "Usage: ImageTool forcergb <input> <output> [-filequality 0-100] [-pad N,N,N]\n"); fprintf(stderr, "\te.g. ImageTool forcergb input.jpg output.jpg\n"); return IMAGECORE_INVALID_USAGE; } int ret = open(args[0], args[1]); if (ret != IMAGECORE_SUCCESS) { return ret; } // Defaults unsigned int compressionQuality = 75; // Optional args unsigned int numOptional = numArgs - 2; if ( numOptional > 0 ) { unsigned int numPairs = numOptional / 2; for ( unsigned int i = 0; i < numPairs; i++ ) { const char* argName = args[2 + i * 2 + 0]; const char* argValue = args[2 + i * 2 + 1]; if( strcmp(argName, "-filequality") == 0 ) { compressionQuality = clamp(0, 100, atoi(argValue)); } else if( strcmp(argName, "-pad") == 0 ) { int ret = populateBuckets(argValue); if (ret != IMAGECORE_SUCCESS) { return ret; } } } } ImageReader* reader = ImageReader::create(m_Source); if( reader == NULL ) { fprintf(stderr, "error: unknown or corrupt image format for '%s'\n", m_InputFilePath); return IMAGECORE_INVALID_FORMAT; } EImageFormat outputFormat = ImageWriter::formatFromExtension(args[1], reader->getFormat()); unsigned int colorProfileSize = 0; reader->getColorProfile(colorProfileSize); if( colorProfileSize != 0 && reader->getFormat() == kImageFormat_JPEG ) { reader->setReadOptions(ImageReader::kReadOption_ApplyColorProfile); ImageRGBA* image = ImageRGBA::create(reader->getWidth(), reader->getHeight()); if( reader->readImage(image) ) { ImageWriter* writer = ImageWriter::createWithFormat(kImageFormat_JPEG, m_Output); if (writer == NULL) { fprintf(stderr, "error: unable to create ImageWriter\n"); return IMAGECORE_OUT_OF_MEMORY; } writer->setWriteOptions(ImageWriter::kWriteOption_WriteDefaultColorProfile); writer->setSourceReader(reader); writer->setQuality(compressionQuality); if( !writer->writeImage(image) ) { ret = IMAGECORE_WRITE_ERROR; } delete writer; } else { fprintf(stderr, "error unable to read input image"); ret = IMAGECORE_READ_ERROR; } delete image; } else { ImageWriter* imageWriter = ImageWriter::createWithFormat(outputFormat, m_Output); unsigned int writeOptions = 0; writeOptions |= ImageWriter::kWriteOption_WriteExifOrientation; writeOptions |= ImageWriter::kWriteOption_WriteDefaultColorProfile; if( imageWriter != NULL ) { imageWriter->setWriteOptions(writeOptions); if( imageWriter->copyLossless(reader) ) { ret = IMAGECORE_SUCCESS; } else { fprintf(stderr, "error: unable to perform lossless copy.\n"); ret = IMAGECORE_INVALID_OPERATION; } delete imageWriter; } } delete reader; reader = NULL; close(); return ret; }