From 5e0ba19538763e77c6638175d981e4c0b38e2d1d Mon Sep 17 00:00:00 2001 From: Martin Kaistra Date: Mon, 2 Mar 2015 22:47:52 +0100 Subject: first commit --- preview_thread.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 preview_thread.py (limited to 'preview_thread.py') diff --git a/preview_thread.py b/preview_thread.py new file mode 100644 index 0000000..740f6c6 --- /dev/null +++ b/preview_thread.py @@ -0,0 +1,58 @@ +from PyQt4 import QtCore, QtGui, uic +from PyQt4.QtCore import pyqtSignal, pyqtSlot +from PIL import Image, ImageDraw, ImageFont +from PIL.ImageQt import ImageQt +import core +import time +from queue import Queue, Empty +import numpy + +class Worker(QtCore.QObject): + + imageCreated = pyqtSignal(['QImage']) + + def __init__(self, parent=None, queue=None): + QtCore.QObject.__init__(self) + parent.newTask.connect(self.createPreviewImage) + parent.processTask.connect(self.process) + self.core = core.Core() + self.queue = queue + + + @pyqtSlot(str, str, QtGui.QFont) + def createPreviewImage(self, backgroundImage, titleText, titleFont): + # print('worker thread id: {}'.format(QtCore.QThread.currentThreadId())) + dic = { + "backgroundImage": backgroundImage, + "titleText": titleText, + "titleFont": titleFont + } + self.queue.put(dic) + + @pyqtSlot() + def process(self): + try: + nextPreviewInformation = self.queue.get(block=False) + while self.queue.qsize() >= 2: + try: + self.queue.get(block=False) + except Empty: + continue + + im = self.core.drawBaseImage( + nextPreviewInformation["backgroundImage"], + nextPreviewInformation["titleText"], + nextPreviewInformation["titleFont"]) + + spectrum = numpy.fromfunction(lambda x: 0.008*(x-128)**2, (255,), dtype="int16") + + im = self.core.drawBars(spectrum, im) + + self._image = ImageQt(im) + self._previewImage = QtGui.QImage(self._image) + + self._scaledPreviewImage = self._previewImage.scaled(320, 180, QtCore.Qt.IgnoreAspectRatio, QtCore.Qt.SmoothTransformation) + + self.imageCreated.emit(self._scaledPreviewImage) + except Empty: + True -- cgit v1.2.3