diff --git a/openlp/core/lib/__init__.py b/openlp/core/lib/__init__.py index 15f40b0e3..24d86ab27 100644 --- a/openlp/core/lib/__init__.py +++ b/openlp/core/lib/__init__.py @@ -137,7 +137,7 @@ def image_to_byte(image): # convert to base64 encoding so does not get missed! return byte_array.toBase64() -def create_thumb(image_path, thumb_path, return_icon=True): +def create_thumb(image_path, thumb_path, return_icon=True, size=None): """ Create a thumbnail from the given image path and depending on ``return_icon`` it returns an icon from this thumb. @@ -151,11 +151,17 @@ def create_thumb(image_path, thumb_path, return_icon=True): ``return_icon`` States if an icon should be build and returned from the thumb. Defaults to ``True``. + + ``size`` + """ ext = os.path.splitext(thumb_path)[1].lower() reader = QtGui.QImageReader(image_path) - ratio = float(reader.size().width()) / float(reader.size().height()) - reader.setScaledSize(QtCore.QSize(int(ratio * 88), 88)) + if size is None: + ratio = float(reader.size().width()) / float(reader.size().height()) + reader.setScaledSize(QtCore.QSize(int(ratio * 88), 88)) + else: + reader.setScaledSize(size) thumb = reader.read() thumb.save(thumb_path, ext[1:]) if not return_icon: @@ -165,21 +171,21 @@ def create_thumb(image_path, thumb_path, return_icon=True): # Fallback for files with animation support. return build_icon(unicode(image_path)) -def validate_thumb(image_path, thumb_path): +def validate_thumb(file_path, thumb_path): """ - Validates whether an image's thumb still exists and if is up to date. + Validates whether an file's thumb still exists and if is up to date. **Note**, you must **not** call this function, before checking the - existence of the image. + existence of the file. - ``image_path`` - The path to the image. + ``file_path`` + The path to the file. The file must exist! ``thumb_path`` The path to the thumb. """ if not os.path.exists(unicode(thumb_path)): return False - image_date = os.stat(unicode(image_path)).st_mtime + image_date = os.stat(unicode(file_path)).st_mtime thumb_date = os.stat(unicode(thumb_path)).st_mtime return image_date <= thumb_date diff --git a/openlp/plugins/presentations/lib/presentationcontroller.py b/openlp/plugins/presentations/lib/presentationcontroller.py index 63bd44cc4..de138a6e1 100644 --- a/openlp/plugins/presentations/lib/presentationcontroller.py +++ b/openlp/plugins/presentations/lib/presentationcontroller.py @@ -31,7 +31,7 @@ import shutil from PyQt4 import QtCore -from openlp.core.lib import Receiver, resize_image +from openlp.core.lib import Receiver, create_thumb, resize_image, validate_thumb from openlp.core.utils import AppLocation log = logging.getLogger(__name__) @@ -149,11 +149,15 @@ class PresentationDocument(object): recent than the powerpoint """ lastimage = self.get_thumbnail_path(self.get_slide_count(), True) + a = validate_thumb(self.filepath, lastimage) if not (lastimage and os.path.isfile(lastimage)): return False imgdate = os.stat(lastimage).st_mtime pptdate = os.stat(self.filepath).st_mtime - return imgdate >= pptdate + #return imgdate >= pptdate + d = imgdate >= pptdate + print a, d + return a def close_presentation(self): """ @@ -245,9 +249,15 @@ class PresentationDocument(object): """ if self.check_thumbnails(): return + import time + import datetime + start = time.time() if os.path.isfile(file): - img = resize_image(file, 320, 240) - img.save(self.get_thumbnail_path(idx, False)) + size = QtCore.QSize(320, 240) + create_thumb(file, self.get_thumbnail_path(idx, False), False, size) +# img = resize_image(file, 320, 240) +# img.save(self.get_thumbnail_path(idx, False)) + print unicode(datetime.timedelta(seconds=time.time() - start)) def get_thumbnail_path(self, slide_no, check_exists): """