void DisplayImageConverter::convertImages(const QImage & a, const QImage & b)
{
	//allocate image if it isn't
	if (m_previewImage.isNull() || m_previewImage.size() != a.size())
	{
		m_previewImage = QImage(a.size(), a.format());
	}
	//composite images
	QPainter painter(&m_previewImage);
	painter.setCompositionMode(QPainter::CompositionMode_Source);
	painter.fillRect(m_previewImage.rect(), Qt::black);
	qreal alphaB = crossFadeValue.normalizedValue();
	qreal alphaA = 1.0 - alphaB;
	if (alphaA <= alphaB)
	{
		painter.drawImage(0, 0, a);
		painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
		painter.setOpacity(alphaB);
		painter.drawImage(0, 0, b);
	}
	else
	{
		painter.drawImage(0, 0, b);
		painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
		painter.setOpacity(alphaA);
		painter.drawImage(0, 0, a);
	}
	//scale image down to real size
	m_displayImage = m_previewImage.scaled(displayWidth, displayHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
	//do image correction
	float brightness = displayBrightness / 50.0f;
	float contrast = (displayContrast + 50.0f) / 100.0f * 2.0f;
	float gamma = displayGamma / 220.0f;
	m_displayImage = changeImage(m_displayImage, brightness, contrast, gamma);
	//send results
	displayImageChanged(m_displayImage);
	previewImageChanged(m_previewImage);
}
示例#2
0
void PosteRazorCore::createPreviewImage(const QSize &size) const
{
    const QImage previewImage = m_imageLoader->imageAsRGB(inputImagePreviewSize(size).toSize());
    emit previewImageChanged(previewImage);
}