from JascApp import * #Default values width = 500 height = 500 compress = 13 def ScriptProperties(): return { 'Author': u'Neil Moomey', 'Copyright': u'Neil Moomey', 'Description': u'Batch Image Resizer', 'Host': u'Paint Shop Pro', 'Host Version': u'8.10' } def Do(Environment): # EnableOptimizedScriptUndo App.Do( Environment, 'EnableOptimizedScriptUndo', { }) #Clear window App.Do( Environment, 'ScriptWndClear' ) # Prompt for max height and width. result = App.Do( Environment, 'GetNumber', { 'DefaultValue': width, 'MinValue': 0, 'MaxValue': 65535, 'DialogTitle': 'GetNumber - ResizeToLimit', 'Prompt': 'Select the desired maximum height or width.', 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default } }) if not result['OKButton']: return MaxThumbnailSize = int(result['EnteredNumber']) # Prompt for compression result = App.Do( Environment, 'GetNumber', { 'DefaultValue': compress, 'MinValue': 0, 'MaxValue': 100, 'DialogTitle': 'Compression', 'Prompt': 'Select the desired compression.', 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default } }) if not result['OKButton']: return compression = int(result['EnteredNumber']) while App.ActiveDocument: flag=1 # Determine new filename 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 image or the same size' % ( Title ) NewWidth = Width NewHeight = Height flag=0 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 ) if flag==1: 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 } }) if flag==1: # FileSaveAs App.Do( Environment, 'FileSaveAs', { '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 } })