restructuring thumbnailer code. adding feature to use symbolic links instead of actual medium size images.

This commit is contained in:
q
2011-12-15 22:44:07 +02:00
parent 7dbc3a7c86
commit c8edc3b4e7

View File

@@ -2,7 +2,7 @@
# #
# Copyright 2011 Ville Rantanen # Copyright 2011 Ville Rantanen
# #
# This program is free software: you can redistribute it and/or modify it # this program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published # under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or # by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version. # (at your option) any later version.
@@ -73,25 +73,42 @@ def createthumbs(path,list):
r=str(options.width) r=str(options.width)
res=r+'x'+r+'>' res=r+'x'+r+'>'
for i in list: for i in list:
if (vectorsearch.match(i)): outmedium=os.path.join(path,'_med','med_'+i+'.jpg')
if (options.force) or (not os.path.exists(os.path.join(path,'_med','med_'+i+'.jpg'))): outthumb=os.path.join(path,'_tn','tn_'+i+'.jpg')
inpath=os.path.join(path,i)
if (options.force) and os.path.exists(outmedium):
os.unlink(outmedium)
if (options.force) and os.path.exists(outthumb):
os.unlink(outthumb)
if (not os.path.exists(outmedium)):
print('Medium.. '+i+' '+str(n)+'/'+str(nsum)) print('Medium.. '+i+' '+str(n)+'/'+str(nsum))
convargs=['convert','-density','300x300',os.path.join(path,i)+'[0]','-background','white','-flatten','-resize',res,'-quality','97',os.path.join(path,'_med','med_'+i+'.jpg')] create_medium_bitmap(inpath,outmedium,r,link=options.link,vector=vectorsearch.match(i))
convp=subprocess.call(convargs) if (not os.path.exists(outthumb)):
if (options.force) or (not os.path.exists(os.path.join(path,'_tn','tn_'+i+'.jpg'))): print('Thumbnail.. '+i+' '+str(n)+'/'+str(nsum))
convargs=['convert','-density','300x300',os.path.join(path,'_med','med_'+i+'.jpg'),'-background','white','-flatten','-thumbnail','90x90^','-gravity','Center','-crop','90x90+0+0','+repage','-quality','75',os.path.join(path,'_tn','tn_'+i+'.jpg')] create_thumb_bitmap(outmedium,outthumb,vector=vectorsearch.match(i))
convp=subprocess.call(convargs)
else:
if (options.force) or (not os.path.exists(os.path.join(path,'_med','med_'+i+'.jpg'))):
print('Medium.. '+i+' '+str(n)+'/'+str(nsum))
convargs=['convert','-define','jpeg:size='+r+'x'+r,os.path.join(path,i)+'[0]','-background','white','-flatten','-resize',res,'-quality','85',os.path.join(path,'_med','med_'+i+'.jpg')]
convp=subprocess.call(convargs)
if (options.force) or (not os.path.exists(os.path.join(path,'_tn','tn_'+i+'.jpg'))):
convargs=['convert','-define','jpeg:size=300x300',os.path.join(path,'_med','med_'+i+'.jpg'),'-background','white','-flatten','-thumbnail','90x90^','-gravity','Center','-crop','90x90+0+0','+repage','-quality','75',os.path.join(path,'_tn','tn_'+i+'.jpg')]
convp=subprocess.call(convargs)
n+=1 n+=1
return return
def create_medium_bitmap(infile,outfile,r,link=False,vector=False):
if link:
os.symlink(infile,outfile)
return
res=r+'x'+r+'>'
if vector:
convargs=['convert','-density','300x300',infile+'[0]','-background','white','-flatten','-resize',res,'-quality','97',outfile]
else:
convargs=['convert','-define','jpeg:size='+r+'x'+r,infile+'[0]','-background','white','-flatten','-resize',res,'-quality','85',outfile]
convp=subprocess.call(convargs)
return
def create_thumb_bitmap(infile,outfile,vector=False):
if vector:
convargs=['convert','-density','300x300',infile,'-background','white','-flatten','-thumbnail','90x90^','-gravity','Center','-crop','90x90+0+0','+repage','-quality','75',outfile]
else:
convargs=['convert','-define','jpeg:size=300x300',infile,'-background','white','-flatten','-thumbnail','90x90^','-gravity','Center','-crop','90x90+0+0','+repage','-quality','75',outfile]
convp=subprocess.call(convargs)
return
def cleanthumbs(path): def cleanthumbs(path):
''' clears _med and _tn for unused thumbs ''' ''' clears _med and _tn for unused thumbs '''
print('clearing unused thumbs...') print('clearing unused thumbs...')
@@ -135,9 +152,11 @@ def execute():
folder is the root folder of the image album.''' folder is the root folder of the image album.'''
parser=OptionParser(usage=usage) parser=OptionParser(usage=usage)
parser.add_option("-f",action="store_true",dest="force",default=False, parser.add_option("-f",action="store_true",dest="force",default=False,
help="Force regeneration of thumbnails") help="Force regeneration of thumbnails and medium sized")
parser.add_option("-c",action="store_true",dest="clean",default=False, parser.add_option("-c",action="store_true",dest="clean",default=False,
help="Clean unused thumbnails") help="Clean unused thumbnails")
parser.add_option("-l",action="store_true",dest="link",default=False,
help="Create symbolic link as medium size image instead of downscaling one.")
parser.add_option("-r",action="store_true",dest="recursive",default=False, parser.add_option("-r",action="store_true",dest="recursive",default=False,
help="Recurse in to subfolders") help="Recurse in to subfolders")
parser.add_option("-w",type="int",dest="width",default=850, parser.add_option("-w",type="int",dest="width",default=850,