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); }
void PosteRazorCore::createPreviewImage(const QSize &size) const { const QImage previewImage = m_imageLoader->imageAsRGB(inputImagePreviewSize(size).toSize()); emit previewImageChanged(previewImage); }