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
13 """Class representing an image"""
14 def __init__(self,filename):
15 self._filename = filename
22 im = PIL_Image.open(self._filename)
25 byte = os.path.getsize(self._filename)
26 return "[%dx%d (%s)]" % (w,d,sizeof_fmt(byte))
28 def resize(self,x,y,pad=0):
30 outfile, ext = os.path.splitext(self._filename)
31 outfile = "%s.%dx%d%s" % (outfile, size[0], size[1], ext)
32 if not os.path.exists(outfile):
33 im = PIL_Image.open(self._filename)
34 im.thumbnail(size, PIL_Image.ANTIALIAS)
36 bg = PIL_Image.new('RGBA', size, (0, 0, 0, 0))
37 bg.paste(im,((size[0]-im.size[0])/2, (size[1]-im.size[1])/2))
42 xmpfile = XMPFiles(file_path=outfile)
43 xmp = xmpfile.get_xmp()
45 xmp.set_property(consts.XMP_NS_XMP, u'CreatorTool',u'treecutter')
46 if xmpfile.can_put_xmp(xmp):
49 cmd = ['exiftool', '-XMP:CreatorTool=treecutter','-quiet','-overwrite_original', outfile]
50 retcode = subprocess.call(cmd)
52 print 'Error: '+' '.join(cmd)+' Returncode ['+str(retcode)+']'
55 cmd = ['exiftool', '-XMP:CreatorTool=treecutter','-quiet','-overwrite_original', outfile]
56 retcode = subprocess.call(cmd)
58 print 'Error: '+' '.join(cmd)+' Returncode ['+str(retcode)+']'
61 self._format[size] = outfile
65 xmpfile = XMPFiles(file_path=self._filename)
66 xmp = xmpfile.get_xmp()
70 if xmp.does_property_exist(consts.XMP_NS_XMP, u'CreatorTool'):
71 cr = xmp.get_property(consts.XMP_NS_XMP, u'CreatorTool')
72 return cr == u'treecutter'
75 return self.resize(50,50,1)
78 return self.resize(700,438,1)
81 cap = "Beskrivning saknas"
82 xmpfile = XMPFiles(file_path=self._filename)
83 xmp = xmpfile.get_xmp()
85 if xmp.does_property_exist(consts.XMP_NS_DC, 'description[1]'):
86 cap = xmp.get_property(consts.XMP_NS_DC, 'description[1]')