from JascApp import * # Change this to set the compression quality of the image compression = 15 def ScriptProperties(): return { 'Author': u'Neil Moomey', 'Copyright': u'Neil Moomey', 'Description': u'ASONP Batch Image Resizer Script', 'Host': u'Paint Shop Pro', 'Host Version': u'8.10' } def Do(Environment): # EnableOptimizedScriptUndo App.Do( Environment, 'EnableOptimizedScriptUndo', { }) #Clear window App.Do( Environment, 'ScriptWndClear' ) while App.ActiveDocument: #Create image 500 pixes wide or high max MaxThumbnailSize=500 print'File is: ' + App.ActiveDocument.Name filenameWithoutExt=App.ActiveDocument.Name.split(".")[0] fname = filenameWithoutExt + '_' + str(MaxThumbnailSize) + '.jpg' # compute the width and the height of image, preserving the aspect ratio ImageInfo = App.Do( Environment, 'ReturnImageInfo' ) Width = ImageInfo['Width'] Height = ImageInfo['Height'] Title = ImageInfo['Title'] if Width <= MaxThumbnailSize and Height <= MaxThumbnailSize: print 'Document %s smaller than requested thumbnail - no change made' % ( Title ) return elif Width > Height: NewWidth = MaxThumbnailSize NewHeight = MaxThumbnailSize * float(Height) / float(Width) else: # height > width NewHeight = MaxThumbnailSize NewWidth = MaxThumbnailSize * float(Width) / float(Height) print 'Document %s resized to %d x %d' % ( Title, NewWidth, NewHeight ) App.Do( Environment, 'Resize', { 'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels, 'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn, 'MaintainAspectRatio': App.Constants.Boolean.true, 'OriginalDimensionUnits': App.Constants.UnitsOfMeasure.Pixels, 'OriginalResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn, 'Resample': App.Constants.Boolean.true, 'ResampleType': App.Constants.ResampleType.SmartSize, 'ResizeAllLayers': App.Constants.Boolean.true, 'Resolution': 100.000, 'Width': NewWidth, 'Height': NewHeight, 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # NormalViewing App.Do( Environment, 'NormalViewing', { 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # FileSaveAs App.Do( Environment, 'FileSaveCopyAs', { 'Encoding': { 'JPG': { 'Variant': App.Constants.JpegFormat.Standard, 'CompressionFactor': compression, 'ChromaSubSampling': App.Constants.ChromaSubSampling.YCC_2x2_1x1_1x1 } }, 'FileName': fname, 'FileFormat': App.Constants.FileFormat.JPG, 'FormatDesc': u'JPEG - JFIF Compliant', 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match }, 'DefaultProperties': [] }) #Repeat for thumbnail MaxThumbnailSize=100 print'File is: ' + App.ActiveDocument.Name filenameWithoutExt=App.ActiveDocument.Name.split(".")[0] fname = filenameWithoutExt + '_thumbnail' + '.jpg' # compute the width and the height of image, preserving the aspect ratio ImageInfo = App.Do( Environment, 'ReturnImageInfo' ) Width = ImageInfo['Width'] Height = ImageInfo['Height'] Title = ImageInfo['Title'] if Width <= MaxThumbnailSize and Height <= MaxThumbnailSize: print 'Document %s smaller than requested thumbnail - no change made' % ( Title ) return elif Width > Height: NewWidth = MaxThumbnailSize NewHeight = MaxThumbnailSize * float(Height) / float(Width) else: # height > width NewHeight = MaxThumbnailSize NewWidth = MaxThumbnailSize * float(Width) / float(Height) print 'Document %s resized to %d x %d' % ( Title, NewWidth, NewHeight ) App.Do( Environment, 'Resize', { 'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels, 'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn, 'MaintainAspectRatio': App.Constants.Boolean.true, 'OriginalDimensionUnits': App.Constants.UnitsOfMeasure.Pixels, 'OriginalResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn, 'Resample': App.Constants.Boolean.true, 'ResampleType': App.Constants.ResampleType.SmartSize, 'ResizeAllLayers': App.Constants.Boolean.true, 'Resolution': 100.000, 'Width': NewWidth, 'Height': NewHeight, 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # NormalViewing App.Do( Environment, 'NormalViewing', { 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # Sharpen App.Do( Environment, 'Sharpen', { 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # FileSaveAs App.Do( Environment, 'FileSaveCopyAs', { 'Encoding': { 'JPG': { 'Variant': App.Constants.JpegFormat.Standard, 'CompressionFactor': compression, 'ChromaSubSampling': App.Constants.ChromaSubSampling.YCC_2x2_1x1_1x1 } }, 'FileName': fname, 'FileFormat': App.Constants.FileFormat.JPG, 'FormatDesc': u'JPEG - JFIF Compliant', 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match }, 'DefaultProperties': [] }) # FileClose App.Do( Environment, 'FileClose', { 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match } })