Beispiel #1
0
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();
}
Beispiel #2
0
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;
}