import it, time, os
from it.It3Command import It3Command
class SaveAll(It3Command):
def __init__(self):
self.m_menuPath = 'Commands/Save All'
def Invoke(self):
self.saveAll()
def saveAll(self, gamma=1.0,quality=100):
localtime = time.asctime( time.localtime(time.time()) )
localtime = localtime.replace(' ', '_')
localtime = localtime.replace(':', '_')
outname = 'catalog_%s' % localtime
cwdpath = os.getcwd()
if len(cwdpath) < 3:
it.app.Error('Unable to determine your current working directory.')
it.app.Error('Unable to save the images.')
it.app.RaiseLogWindow()
return
it.app.Info('Saving images to "%s"' % cwdpath)
out_dirpath = os.path.join(cwdpath,outname)
if not os.path.exists(out_dirpath):
os.mkdir(out_dirpath)
aovDict = {}
cat = it.app.GetCurrentCatalog()
img_counter = 1
for i in range (0, cat.GetChildCount()):
element = cat.GetChild(i)
imgname = it.os.path.basename( element.GetFilename() )
if imgname == '_preview':
continue
# Add a padded numeric extension
imgname = imgname + ('.%04d' % img_counter) + '.jpg'
out_imgpath = os.path.join(out_dirpath, imgname)
self.saveImage(element, out_imgpath, gamma, quality)
img_counter += 1
# Save any AOV's
for j in range (0, element.GetChildCount()):
aov = element.GetChild(j)
aovname = it.os.path.basename( aov.GetFilename() )
# Remove the extension
aovname = os.path.splitext(aovname)[0]
# Maintain unique counters for each AOV
aov_counter = 1
if aovDict.has_key(aovname):
aov_counter = aovDict[aovname]
aov_counter += 1;
aovDict[aovname] = aov_counter
# Add a padded numeric extension
aovname = aovname + ('.%04d' % aov_counter) + '.jpg'
out_aovpath = os.path.join(out_dirpath, aovname)
self.saveImage(aov, out_aovpath, gamma, quality)
def saveImage(self, element,path,gamma,quality):
image = element.GetImage()
image = image.Gamma(gamma);
image.SetMetaDataItem('JPEG_QUALITY', quality)
image.Save(path, ice.constants.FMT_JPEG)
it.commands.append(SaveAll)