# # Generate 100 Kaleidoscopes from a single JPG, randomizing the parameters. # Paintshop Pro V8 # # Sean McGrath # http://seanmcgrath.blogspot.com # # PSP stuff from JascApp import * # Will use random number generator to make the images more interesting import random # Open up the file we want to work with def OpenFile(Environment): App.Do( Environment, 'FileOpen', { 'FileList': [r'c:\photo.JPG'], 'Folder': 'c:\\data\\', 'FileFormat': App.Constants.FileFormat.Unknown, 'ShowPreview': App.Constants.Boolean.false, 'EnableBrowser': App.Constants.Boolean.true, 'FavFileList': [], 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Silent, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # -1 or +1 = used later in randomizing parameters def PlusOrMinusCoinFlip(): if random.random() < 0.5: return +1 else: return -1 # Save out a file in KPG format def SaveAs(Environment,Filename): App.Do( Environment, 'FileSaveAs', { 'Encoding': { 'JPG': { 'Variant': App.Constants.JpegFormat.Standard, 'CompressionFactor': 15, 'ChromaSubSampling': App.Constants.ChromaSubSampling.YCC_2x2_1x1_1x1 } }, 'FileName': Filename, 'FileFormat': App.Constants.FileFormat.JPG, 'FormatDesc': r'JPEG - JFIF Compliant', 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.AllAlways }, 'DefaultProperties': [] }) # Close current file def CloseFile(Environment): App.Do( Environment, 'FileClose', { 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # Turn current image into a funky Kaleidoscope def Kaleidoscope(Environment): App.Do( Environment, 'Kaleidoscope', { 'Angle': int(random.random() * 360), 'HorizontalOffset': int(random.random() * 100) * PlusOrMinusCoinFlip(), 'Scale': int(random.random() * 90) * PlusOrMinusCoinFlip(), 'VerticalOffset': int(random.random() * 100) * PlusOrMinusCoinFlip(), 'NumOrbits': int(random.random() * 5), 'RadialSuction': int(random.random() * 100), 'NumPetals': 2 + int(random.random() * 19), 'EdgeMode': App.Constants.EdgeMode.Background, 'FillColor': (255,255,255), 'GeneralSettings': { 'ExecutionMode': App.Constants.ExecutionMode.Default, 'AutoActionMode': App.Constants.AutoActionMode.Match } }) # Standard PSP callback def ScriptProperties(): return { 'Author': '', 'Copyright': '', 'Description': '', 'Host': 'Paint Shop Pro', 'Host Version': '8.00' } # Standard PSP entry point - 100 Kaleidoscopes def Do(Environment): for i in range (1,100): OpenFile(Environment) Kaleidoscope(Environment) SaveAs(Environment,'d:\\kaleidoscopes\%d.jpg' % i) CloseFile(Environment)