← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~googol-hush/openlp/thumb-creation into lp:openlp

 

Andreas Preikschat has proposed merging lp:~googol-hush/openlp/thumb-creation into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~googol-hush/openlp/thumb-creation/+merge/63566

Hello,

NOTE: Due to feature freeze this proposal is targeted for Beta 3.

This improves the thumbnail creation speed of the image plugin (in the mediamanger).

Previously this took very long. It also needed many resources.

The time will (obviously) vary from computer to computer. Also some formats which support animation (gif, mng, ...) will take longer, as thumbnail creation does not work or has not been implemented (this is not a regression of this branch!).

http://olliwang.com/2010/01/30/creating-thumbnail-images-in-qt/
http://doc.trolltech.com/4.6/qimagereader.html
-- 
https://code.launchpad.net/~googol-hush/openlp/thumb-creation/+merge/63566
Your team OpenLP Core is requested to review the proposed merge of lp:~googol-hush/openlp/thumb-creation into lp:openlp.
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py	2011-06-04 16:07:42 +0000
+++ openlp/core/lib/mediamanageritem.py	2011-06-06 15:12:37 +0000
@@ -391,21 +391,26 @@
             self.iconFromFile(image, thumb)
         return True
 
-    def iconFromFile(self, image, thumb):
+    def iconFromFile(self, image_path, thumb_path):
         """
         Create a thumbnail icon from a given image.
 
-        ``image``
+        ``image_path``
             The image file to create the icon from.
 
-        ``thumb``
-            The filename to save the thumbnail to
+        ``thumb_path``
+            The filename to save the thumbnail to.
         """
-        icon = build_icon(unicode(image))
-        pixmap = icon.pixmap(QtCore.QSize(88, 50))
-        ext = os.path.splitext(thumb)[1].lower()
-        pixmap.save(thumb, ext[1:])
-        return icon
+        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))
+        thumb = reader.read()
+        thumb.save(thumb_path, ext[1:])
+        if os.path.exists(thumb_path):
+            return build_icon(unicode(thumb_path))
+        # Fallback for files with animation support.
+        return build_icon(unicode(image_path))
 
     def loadList(self, list):
         raise NotImplementedError(u'MediaManagerItem.loadList needs to be '


Follow ups