page: using lxml transform, simple docbook & image
[treecutter.git] / treecutter / image.py
1 #!/usr/bin/python
2
3 from PIL import Image as PIL_Image
4 from libxmp import consts
5 from libxmp import XMPFiles
6 from treecutter.tools import sizeof_fmt
7
8
9 class Image():
10     """Class representing an image"""
11     def __init__(self,filename):
12         self._filename = filename
13         self._format = {}
14
15     def infostr(self):
16         image = PIL_Image.open(self._filename)
17         w,d = image.size
18         image.close()
19         byte = os.path.getsize(self._filename)
20         return "[%dx%d (%s)]" % (w,d,sizeof_fmt(byte))
21
22     def resize(self,x,y):
23         size = (x, y)
24         outfile, ext = os.path.splitext(self._filename)
25         outfile = "%s.%dx%d.%s" % (outfile, size[0], size[1], ext)
26         if not os.path.exists(outfile):
27             im = PIL_Image.open(infile)
28             im.thumbnail(size, PIL_Image.ANTIALIAS)
29             bg = PIL_Image.new('RGBA', size, (0, 0, 0, 0))
30             bg.paste(im,((size[0]-im.size[0])/2, (size[1]-im.size[1])/2))
31             im.save(outfile)
32             self._format[size] = outfile
33         return outfile
34
35     def set_generated(self):
36         print self._filename 
37
38     def generated(self):
39         print self._filename
40
41     def thumbnail(self):
42         return image.resize(50,50)
43
44     def slider(self):
45         return image.resize(700,438)
46
47     def caption(self):
48         xmpfile = XMPFiles(file_path=self._filename)
49         xmp = xmpfile.get_xmp()
50         cap = xmp.get_property(consts.XMP_NS_DC, 'description[1]' )
51         xmpfile.close_file()
52         return cap