def fetch_thumbnail(filename, size=Gst.get_int('thumbnail-size'), orient=1): """Load a photo's thumbnail from disk >>> fetch_thumbnail('gg/widgets.py') Traceback (most recent call last): OSError: gg/widgets.py: No thumbnail found. >>> type(fetch_thumbnail('demo/IMG_2411.JPG')) <class 'gi.repository.GdkPixbuf.Pixbuf'> """ try: exif = GExiv2.Metadata(filename) except GObject.GError: raise OSError('{}: No thumbnail found.'.format(filename)) with ignored(KeyError, ValueError): orient = int(exif['Exif.Image.Orientation']) try: thumb = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, size, size) except GObject.GError: try: preview = exif.get_preview_properties() data = exif.get_preview_image(preview[0]).get_data() except (IndexError, GObject.GError): raise OSError('{}: No thumbnail found.'.format(filename)) return GdkPixbuf.Pixbuf.new_from_stream_at_scale( Gio.MemoryInputStream.new_from_data(data, None), size, size, True, None) return ROTATIONS.get(orient, lambda x: x)(thumb)
def fetch_thumbnail(filename, size=Gst.get_int('thumbnail-size'), orient=1): """Load a photo's thumbnail from disk >>> fetch_thumbnail('gg/widgets.py') Traceback (most recent call last): OSError: gg/widgets.py: No thumbnail found. >>> type(fetch_thumbnail('demo/IMG_2411.JPG')) <class 'gi.repository.GdkPixbuf.Pixbuf'> """ try: exif = GExiv2.Metadata(filename) except GObject.GError: raise OSError('{}: No thumbnail found.'.format(filename)) with ignored(KeyError, ValueError): orient = int(exif['Exif.Image.Orientation']) try: thumb = GdkPixbuf.Pixbuf.new_from_file_at_size(filename, size, size) except GObject.GError: try: data = exif.get_preview_image().get_data() except GObject.GError: raise OSError('{}: No thumbnail found.'.format(filename)) return GdkPixbuf.Pixbuf.new_from_stream_at_scale( Gio.MemoryInputStream.new_from_data(data, None), size, size, True, None) return ROTATIONS.get(orient, lambda x: x)(thumb)
def animate_in(anim=True): """Fade in all the map actors.""" for i in range(Gst.get_int('animation-steps') if anim else 1, 0, -1): for actor in (Crosshair, Box, Scale): actor.set_opacity(256 - i) Widgets.redraw_interface() sleep(0.01)