From 6d5ba5865b8926790669ba78bc0bcd791f4c4ce7 Mon Sep 17 00:00:00 2001 From: Balthasar Reuter Date: Wed, 22 Aug 2018 01:38:48 +0200 Subject: [PATCH] Resized preview image to improve performance --- photobooth/camera/PictureDimensions.py | 18 ++++++++++++++++++ photobooth/camera/__init__.py | 1 + 2 files changed, 19 insertions(+) diff --git a/photobooth/camera/PictureDimensions.py b/photobooth/camera/PictureDimensions.py index cce5bde..4b6c6ce 100644 --- a/photobooth/camera/PictureDimensions.py +++ b/photobooth/camera/PictureDimensions.py @@ -37,6 +37,8 @@ class PictureDimensions: self.computeThumbnailDimensions() + self.computePreviewDimensions(config) + def computeThumbnailDimensions(self): resize_factor = min((((self.outputSize[i] - (self.numPictures[i] + 1) * @@ -58,6 +60,17 @@ class PictureDimensions: pos[j] * self.thumbnailSize[j] for j in range(2))) + def computePreviewDimensions(self, config): + + gui_size = (config.getInt('Gui', 'width'), + config.getInt('Gui', 'height')) + + resize_factor = min(min((gui_size[i] / self.captureSize[i] + for i in range(2))), 1) + + self._preview_size = tuple(int(self.captureSize[i] * resize_factor) + for i in range(2)) + @property def numPictures(self): @@ -98,3 +111,8 @@ class PictureDimensions: def thumbnailOffset(self): return self._thumb_offsets + + @property + def previewSize(self): + + return self._preview_size diff --git a/photobooth/camera/__init__.py b/photobooth/camera/__init__.py index db7c217..1f2c9de 100644 --- a/photobooth/camera/__init__.py +++ b/photobooth/camera/__init__.py @@ -121,6 +121,7 @@ class Camera: if self._is_preview: while self._comm.empty(Workers.CAMERA): picture = ImageOps.mirror(self._cap.getPreview()) + picture = picture.resize(self._pic_dims.previewSize) self._comm.send(Workers.GUI, StateMachine.CameraEvent('preview', picture))