From 7d8e9ab3b16546e91144e256e88f9f490abc7ec2 Mon Sep 17 00:00:00 2001 From: DH4 Date: Thu, 1 Jun 2017 22:46:45 -0500 Subject: Added aspect ratio scaling to preview area. --- background.jpg | Bin 0 -> 14782 bytes main.py | 35 +++++++++++++++++++---- mainwindow.ui | 86 ++++++++++++++++---------------------------------------- video_thread.py | 2 +- 4 files changed, 55 insertions(+), 68 deletions(-) create mode 100644 background.jpg diff --git a/background.jpg b/background.jpg new file mode 100644 index 0000000..f746432 Binary files /dev/null and b/background.jpg differ diff --git a/main.py b/main.py index 8bbbf08..f34cbee 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ from os.path import expanduser from queue import Queue from importlib import import_module from PyQt4 import QtCore, QtGui, uic -from PyQt4.QtCore import QSettings, QModelIndex +from PyQt4.QtCore import QSettings, QModelIndex, Qt from PyQt4.QtGui import QDesktopServices import preview_thread, core, video_thread @@ -107,6 +107,29 @@ class Command(QtCore.QObject): self.settings.setValue("textColor", '%s,%s,%s' % self.textColor) sys.exit(0) ''' + +class PreviewWindow(QtGui.QLabel): + def __init__(self, parent, img): + super(PreviewWindow, self).__init__() + self.parent = parent + self.setFrameStyle(QtGui.QFrame.StyledPanel) + self.pixmap = QtGui.QPixmap(img) + + def paintEvent(self, event): + size = self.size() + painter = QtGui.QPainter(self) + point = QtCore.QPoint(0,0) + scaledPix = self.pixmap.scaled(size, Qt.KeepAspectRatio, transformMode = Qt.SmoothTransformation) + # start painting the label from left upper corner + point.setX((size.width() - scaledPix.width())/2) + point.setY((size.height() - scaledPix.height())/2) + #print point.x(), ' ', point.y() + painter.drawPixmap(point, scaledPix) + + def changePixmap(self, img): + self.pixmap = QtGui.QPixmap(img) + self.repaint() + class Main(QtCore.QObject): newTask = QtCore.pyqtSignal(str, list) @@ -151,6 +174,9 @@ class Main(QtCore.QObject): window.progressBar_createVideo.setValue(0) window.pushButton_createVideo.clicked.connect(self.createAudioVisualisation) window.setWindowTitle("Audio Visualizer") + + self.previewWindow = PreviewWindow(self, r"background.jpg") + window.verticalLayout_previewWrapper.addWidget(self.previewWindow) self.modules = self.findComponents() for component in self.modules: @@ -269,10 +295,7 @@ class Main(QtCore.QObject): # self.processTask.emit() def showPreviewImage(self, image): - self._scaledPreviewImage = image - self._previewPixmap = QtGui.QPixmap.fromImage(self._scaledPreviewImage) - - self.window.label_previewContainer.setPixmap(self._previewPixmap) + self.previewWindow.changePixmap(image) def findComponents(self): def findComponents(): @@ -548,7 +571,7 @@ if __name__ == "__main__": topMargin = 0 if (dpi == 96) else int(10 * (dpi / 96)) window.resize(window.width() * (dpi / 96), window.height() * (dpi / 96)) - window.verticalLayout_2.setContentsMargins(0, topMargin, 0, 0) + #window.verticalLayout_2.setContentsMargins(0, topMargin, 0, 0) main = Main(window) diff --git a/mainwindow.ui b/mainwindow.ui index 0dcce91..808073b 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -27,75 +27,24 @@ - + + + QLayout::SetDefaultConstraint + 0 - - - Qt::Vertical - - - QSizePolicy::Minimum - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - 356 - 280 - - - - - 0 - 0 - - - - false - - - background-color:rgba(255, 255, 255, 15); - - - - - - - true - - - Qt::AlignCenter - - - - - + - Qt::Vertical + Qt::Horizontal - QSizePolicy::Minimum + QSizePolicy::MinimumExpanding - 0 + 420 0 @@ -105,16 +54,25 @@ + + QLayout::SetMinimumSize + 3 + + QLayout::SetMinimumSize + 3 + + QLayout::SetMinimumSize + @@ -141,10 +99,10 @@ - Qt::Vertical + Qt::Horizontal - QSizePolicy::Fixed + QSizePolicy::Minimum @@ -218,6 +176,12 @@ + + + 0 + 0 + + Open Preset diff --git a/video_thread.py b/video_thread.py index dee254a..a7c7ac6 100644 --- a/video_thread.py +++ b/video_thread.py @@ -63,7 +63,7 @@ class Worker(QtCore.QObject): def previewDispatch(self): while True: i = self.previewQueue.get() - if time.time() - self.lastPreview >= 0.05 or i[0] == 0: + if time.time() - self.lastPreview >= 0.06 or i[0] == 0: self._image = ImageQt(i[1]) self.imageCreated.emit(QtGui.QImage(self._image)) self.lastPreview = time.time() -- cgit v1.2.3