degal/image.py
author Tero Marttila <terom@fixme.fi>
Thu, 02 Jul 2009 23:59:58 +0300
changeset 146 c226063eeb65
parent 141 9387da0dc183
permissions -rw-r--r--
remove obsolete db.py
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     1
"""
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     2
    Per-image gallery state
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     3
"""
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     4
128
f66bb9f6126a fix Image.cleanup to not do AttributeErrors
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
     5
import filesystem, format, thumbnail, exif, utils
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
     6
from utils import lazy_load
12
c2d8e9a754a1 Major code restructuring. Version is now 0.5, templates use Mako, and the code is split off into several files under lib/
terom
parents:
diff changeset
     7
c2d8e9a754a1 Major code restructuring. Version is now 0.5, templates use Mako, and the code is split off into several files under lib/
terom
parents:
diff changeset
     8
import PIL.Image
33
4943047bfcb5 merged http://pajukanta.fi/temp/degal_exif_r33.tar.bz2 patch from Japsu
terom
parents: 28
diff changeset
     9
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    10
class Image (filesystem.File) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    11
    """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    12
        An Image is a filesystem File that represents an image that can be thumbnailed, and handled.
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    13
    """
44
533b7e8b5d3b strip copyright/license boilerplate from modules, except dexif and formatbytes
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
    14
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
    15
    def __init__ (self, *args, **kwargs) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    16
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    17
            Initialize as an Image based on the given Node, linked with the given previous node
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    18
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    19
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    20
        super(Image, self).__init__(*args, **kwargs)
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    21
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 128
diff changeset
    22
        # use config from our folder
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 128
diff changeset
    23
        self.config = self.parent.config
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 128
diff changeset
    24
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    25
        # links
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
    26
        self.prev = None
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    27
        self.next = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    28
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    29
        # the .html file for this image
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 128
diff changeset
    30
        # XXX: keep .jpg/etc file extension?
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    31
        self.html = self.parent.subfile(self.basename + '.html')
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    32
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    33
        # our preview/thumbnail
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    34
        self.preview = thumbnail.Thumbnail(self, self.parent.preview_dir, self.config.preview_size)
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    35
        self.thumb = thumbnail.Thumbnail(self, self.parent.thumb_dir, self.config.thumb_size)
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    36
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    37
        # info
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    38
        self.title = self.name
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    39
        self.description = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    40
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    41
    @lazy_load
115
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    42
    def img (self) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    43
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    44
            Loads the image as a PIL.Image
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    45
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    46
        
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    47
        # open it up
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    48
        return PIL.Image.open(self.path)
115
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    49
    
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    50
    @property
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    51
    def img_size (self) :
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    52
        """
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    53
            Returns the pixel (width, height) resolution tuple of this image.
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    54
        """
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    55
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    56
        return self.img.size
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    57
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    58
    @lazy_load
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    59
    def exif (self) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    60
        """
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    61
            Loads the ExifHandler object for this image.
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    62
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    63
            Returns None if no exif data was found
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    64
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    65
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    66
        # look up using exif
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    67
        return exif.load(self.config, self)
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    68
    
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    69
    @lazy_load
122
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    70
    def orientation (self) :
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    71
        """
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    72
            Loads the orientation of this image as a (mirroring, rotation) tuple, or None, if the information is not available.
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    73
        """
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    74
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    75
        if self.config.with_exif and self.exif :
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    76
            # try and find it
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    77
            return self.exif.get_orientation()
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    78
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    79
        else :
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    80
            # no exif data
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    81
            return None
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    82
292aaba6d6ec auto-orientation, although no mirroring support yet
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    83
    @lazy_load
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    84
    def metadata (self) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    85
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    86
            Load and return the metadata for the image as a dictionary
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    87
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    88
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    89
        # load stuff
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    90
        stat = self.stat()
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    91
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    92
        # XXX: avoid having to open the image?
115
d5aa320697df rename Image.pil_image -> Image.img, and shave off ~30ms per image by using Image.resize instead of Image.copy/Image.thumbnail
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
    93
        size = self.img_size
77
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    94
        
2a53c5ade434 misc. fixes, it runs now, but HTML output is corrupt (no flattening)
Tero Marttila <terom@fixme.fi>
parents: 76
diff changeset
    95
        # build
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    96
        metadata = [
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    97
            ("File name",       self.name),
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    98
            ("Resolution",      "%dx%d" % size),
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
    99
            ("File size",       format.filesize(stat.st_size)),
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   100
            ("Last modified",   format.filetime(stat.st_mtime)),
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   101
        ]
111
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   102
        
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   103
        # optionally load Exif metadata
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   104
        if self.config.with_exif and self.exif :
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   105
            exif_tag_name = dict(self.config.exif_tags)
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   106
            exif_tags = (tag for tag, name in self.config.exif_tags)
111
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   107
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   108
            # merge the wanted tags
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   109
            metadata.extend((
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   110
                (exif_tag_name[tag], value) for tag, value in self.exif.image_tags(exif_tags)
111
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   111
            ))
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   112
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   113
        return metadata
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   114
    
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   115
    def stale (self) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   116
        """
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   117
            Tests if this Image is stale, based on preview/thumb.
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   118
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   119
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   120
        return self.preview.stale() or self.thumb.stale()
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   121
    
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   122
    def update (self) :
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   123
        """
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   124
            Updates this Image's thumb/preview
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   125
        """
85
7da934333469 move thumbnail rendering from render.py to thumbnail.py, and implement staleness checking for Images, plus index_images for Folder
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
   126
        
91
17ae33501289 change Image.update to unconditionally update the thumb/preview
Tero Marttila <terom@fixme.fi>
parents: 85
diff changeset
   127
        self.preview.update()
17ae33501289 change Image.update to unconditionally update the thumb/preview
Tero Marttila <terom@fixme.fi>
parents: 85
diff changeset
   128
        self.thumb.update()
123
31c4a328ef96 move the uncache-del's from commands.main to Image.cleanup, and call it after rendering each image's thumbs
Tero Marttila <terom@fixme.fi>
parents: 122
diff changeset
   129
    
31c4a328ef96 move the uncache-del's from commands.main to Image.cleanup, and call it after rendering each image's thumbs
Tero Marttila <terom@fixme.fi>
parents: 122
diff changeset
   130
    def cleanup (self) :
31c4a328ef96 move the uncache-del's from commands.main to Image.cleanup, and call it after rendering each image's thumbs
Tero Marttila <terom@fixme.fi>
parents: 122
diff changeset
   131
        """
125
74f135774567 fix rotated size of auto-oriented thumbnails, and throw some code at mirroring - untested
Tero Marttila <terom@fixme.fi>
parents: 123
diff changeset
   132
            Drop some memory-intensive cached values
123
31c4a328ef96 move the uncache-del's from commands.main to Image.cleanup, and call it after rendering each image's thumbs
Tero Marttila <terom@fixme.fi>
parents: 122
diff changeset
   133
        """
128
f66bb9f6126a fix Image.cleanup to not do AttributeErrors
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
   134
        
f66bb9f6126a fix Image.cleanup to not do AttributeErrors
Tero Marttila <terom@fixme.fi>
parents: 125
diff changeset
   135
        utils.unload(self, 'img', 'exif', 'metadata')
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   136