我正在尝试在PaintShop Pro上自动执行一些图像编辑任务。简单地说,我想手动将图像从当前位置加载到PSP中,然后在图像上运行脚本以调整大小,然后在画布上调整大小,最后在其原始位置以新名称(交互方式)保存生成的文件
我现有的脚本如下:
from PSPApp import *
def ScriptProperties():
return {
'Author': u'',
'Copyright': u'',
'Description': u'',
'Host': u'PaintShop Pro',
'Host Version': u'21.00'
}
def Do(Environment):
# EnableOptimizedScriptUndo
App.Do( Environment, 'EnableOptimizedScriptUndo', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# Resize
App.Do( Environment, 'Resize', {
'AspectRatio': 0.997183,
'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels,
'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn,
'Height': 251,
'MaintainAspectRatio': True,
'Resample': True,
'ResampleType': App.Constants.ResampleType.Bicubic,
'ResizeAllLayers': True,
'Resolution': 499,
'Width': 250,
'SharpnessValue': 50,
'AdvancedMode': True,
'ResizeType': 0,
'OneSide_Type': 0,
'OneSide_LongWidth': 657,
'OneSide_ShortHeight': 655,
'OneSide_Unit': App.Constants.UnitsOfMeasure.Pixels,
'OneSide_Active': 0,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# ResizeCanvas
App.Do( Environment, 'ResizeCanvas', {
'AspectRatio': 0.996016,
'FillColor': (9,7,10),
'HoriPlace': App.Constants.HorizontalType.Center,
'MaintainAspect': False,
'NewDimUnits': App.Constants.UnitsOfMeasure.Pixels,
'NewHeight': 250,
'NewWidth': 250,
'PlaceBottom': -1,
'PlaceLeft': 0,
'PlaceRight': 0,
'PlaceTop': 0,
'VertPlace': App.Constants.VerticalType.Center,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# FileSaveAs
App.Do( Environment, 'FileSaveAs', {
'Encoding': {
'JPG': {
'Variant': App.Constants.JpegFormat.Lossless,
'CompressionFactor': 20,
'ChromaSubSampling': App.Constants.ChromaSubSampling.YCC_1x1_1x1_1x1,
'EXIF': True,
'EmbedJPGICC': True
}
},
'FileName': u'00.jpg',
'FileFormat': App.Constants.FileFormat.JPG,
'FormatDesc': u'JPG JPEG ',
'WorkingMode': 0,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Interactive,
'AutoActionMode': App.Constants.AutoActionMode.PromoteAsk,
'Version': ((21,0,0),1)
},
'DefaultProperties': []
})
在我进入FileSaveAs
步骤之前,这一切都很好。当前脚本将文件保存到脚本的当前工作目录,而不是我正在处理的图像文件的目录。(注意:我将模式设置为Interactive,因此我有机会在Interactive SaveAs对话框中重命名该文件)
任何帮助都将受到感激。说到脚本,我是个新手
更新! 我通过添加
path = App.TargetDocument.Name.rstrip(App.TargetDocument.Title)
filename = path + "00_" + App.TargetDocument.Title
所以新的剧本是这样的
from PSPApp import *
def ScriptProperties():
return {
'Author': u'',
'Copyright': u'',
'Description': u'',
'Host': u'PaintShop Pro',
'Host Version': u'21.00'
}
def Do(Environment):
path = App.TargetDocument.Name.rstrip(App.TargetDocument.Title)
filename = path + "00_" + App.TargetDocument.Title
# EnableOptimizedScriptUndo
App.Do( Environment, 'EnableOptimizedScriptUndo', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# Resize
App.Do( Environment, 'Resize', {
'AspectRatio': 0.997183,
'CurrentDimensionUnits': App.Constants.UnitsOfMeasure.Pixels,
'CurrentResolutionUnits': App.Constants.ResolutionUnits.PixelsPerIn,
'Height': 251,
'MaintainAspectRatio': True,
'Resample': True,
'ResampleType': App.Constants.ResampleType.Bicubic,
'ResizeAllLayers': True,
'Resolution': 499,
'Width': 250,
'SharpnessValue': 50,
'AdvancedMode': True,
'ResizeType': 0,
'OneSide_Type': 0,
'OneSide_LongWidth': 657,
'OneSide_ShortHeight': 655,
'OneSide_Unit': App.Constants.UnitsOfMeasure.Pixels,
'OneSide_Active': 0,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# ResizeCanvas
App.Do( Environment, 'ResizeCanvas', {
'AspectRatio': 0.996016,
'FillColor': (9,7,10),
'HoriPlace': App.Constants.HorizontalType.Center,
'MaintainAspect': False,
'NewDimUnits': App.Constants.UnitsOfMeasure.Pixels,
'NewHeight': 250,
'NewWidth': 250,
'PlaceBottom': -1,
'PlaceLeft': 0,
'PlaceRight': 0,
'PlaceTop': 0,
'VertPlace': App.Constants.VerticalType.Center,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((21,0,0),1)
}
})
# FileSaveAs
App.Do( Environment, 'FileSaveAs', {
'Encoding': {
'JPG': {
'Variant': App.Constants.JpegFormat.Lossless,
'CompressionFactor': 0,
'ChromaSubSampling': App.Constants.ChromaSubSampling.YCC_1x1_1x1_1x1,
'EXIF': True,
'EmbedJPGICC': True
}
},
'FileName': filename,
'FileFormat': App.Constants.FileFormat.JPG,
'FormatDesc': u'JPG JPEG ',
'WorkingMode': 0,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((23,0,0),1)
},
'DefaultProperties': []
})
我现在有一个补充问题,也许有人可以就此向我提出建议。为了使上面的脚本运行而不需要我的交互(重命名文件),我想找到一种方法,根据模板重命名要保存的文件。在上面的脚本中,我已经在原始文件名的前面添加了“00”,但我还想删除原始文件名末尾的任何数字字符。例如,我希望Landscape1.jpg或Landscape22.jpg或Landscape333.jpg等保存为00_scape.jpg。。。有什么想法吗
我想对你的策略提出一些不同的建议。 请看我使用的代码。在这段代码中,Paintshop Pro将给出一个类似
Image1.jpg
等的名称。此外,您可以从文本编辑器控制所有过程,因为从长远来看,它更容易、更快。我没有包括交互模式,但让我们从这个开始,看看您喜欢它:-) 我还删除了很多Paintshop Pro代码,因为它更容易阅读,而且仍然可以正常工作。我只是想确认一下,没问题相关问题 更多 >
编程相关推荐