此脚本是我们用于在Photoshop中编辑产品照片后处理的较大Photoshop操作的一部分。我最近发现这部分动作(脚本)已经停止正常工作。它应该拍摄任何最长边大于2400像素的图像并将其缩小到2400像素,忽略任何最长边不大于2400像素的图像。但现在它正在运行,无论图像大小是什么,它会炸毁较小的图像,并在此过程中摧毁它们。
我们最近将我们的Mac客户端从10.8升级到OS 10.11,并且在此过程中还必须运行几个Photoshop更新。我会假设其中一个或两个因素。我们正在运行Photoshop CS6并且没有改变。
#target photoshop
// get a reference to the current (active) document and store it in a variable named "doc"
doc = app.activeDocument;
// these are our values for the end result width and height (in pixels) of our image
var fWidth = 2400;
var fHeight = 2400;
// resize. if height > width (portrait-mode) AND height is larger than 2400px -- resize based on height. otherwise, resize based on width only if width is greater than 2400px
if(doc.height > 2400,"px" || doc.width > 2400,"px") {
if (doc.height > doc.width) {
doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}
}'
对此有任何帮助将不胜感激。
答案 0 :(得分:1)
找到解决方案。感谢Mark Dee关于初始参数语法的评论(感谢Mark),我决定简化语法是最好的。
我遇到的问题是,当给PS一个数字时,它会按照你的标尺的当前单位设置单位。因此,如果用户的标尺未设置为正确的单位,则脚本无法正常工作。这是我的修复:
#target photoshop
// get a reference to the current (active) document and store it in a variable named "doc"
doc = app.activeDocument;
// setting the ruler unit to pixels
app.preferences.rulerUnits = Units.PIXELS;
// these are our values for the end result width and height (in pixels) of our image
var fWidth = 2400;
var fHeight = 2400;
// resize. if height > width (portrait-mode) AND height is larger than 2400px -- resize based on height. otherwise, resize based on width only if width is greater than 2400px
if(doc.height > 2400 || doc.width > 2400) {
if (doc.height > doc.width) {
doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}
}
// setting the ruler unit back to inches
app.preferences.rulerUnits = Units.INCHES;
我现在唯一的问题就是它手动将单位设置回英寸,我更愿意,如果它只是把它放回到"之前是什么"但我不知道该怎么做,必须进一步调查。
答案 1 :(得分:0)
您可以在变量中获取并存储当前的rulerUnits设置,您可以使用该变量来测试(并更改)脚本所需的ruleUnits。脚本完成后,您可以使用相同的变量将rulerUnits设置恢复到原来的状态。
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void serviceMethod() {}
@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod1() {}
@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod2() {}