我正在尝试调整大小并从文件夹中裁剪多张图片。首先,让我们看一下脚本的一些部分:
// DOCUMENT SETTINGS
app.preferences.rulerUnits = Units.MM;
app.displayDialogs = DialogModes.NO;
// FUNCTIONS
function processing_f_alta(folder, files, w, h) {
var f_alta = new Folder(folder + "/ALTA");
if ( ! f_alta.exists ) { f_alta.create(); }
for ( var cont = 0; cont < files.length; cont++ ) {
files[cont].copy(decodeURI(f_alta) + "/" + files[cont].displayName);
}
var files = f_alta.getFiles("*.tif");
for ( var cont = 0; cont < files.length; cont++ ) {
var img_file = app.open(files[cont]);
img_file.resizeImage(UnitValue(w, "cm"), UnitValue(h, "cm"), null, ResampleMethod.BICUBIC);
img_file.resizeCanvas(UnitValue(w, "cm"), UnitValue(h, "cm"), AnchorPosition.MIDDLECENTER);
img_file.close(SaveOptions.SAVECHANGES);
}
}
var w =prompt("Width (cm)","","Introduzca valor");
var h =prompt("Height (cm)","","Introduzca valor");
var f_origin_folder = Folder.selectDialog("Select the containing folder of the images");
var folder = new Folder(f_origin_folder);
var files = folder.getFiles("*.tif");
processing_f_alta(folder, files, w/2, h/2);
脚本有更多的代码,但它无关紧要。
这个想法是从键盘获得一个hipothetic宽度(“w”)和高度(“h”)并在图像(“文件夹”)时获取文件夹。因此,该脚本获取该文件夹的所有“.tif”文件,并将它们保存到变量“files”中。
使用多个参数(文件夹,文件,w / 2,h / 2 )调用函数 processing_f_alta()。为什么最后的参数除以2是无关紧要的。
在该函数中,脚本在名为“ALTA”的“文件夹”中创建一个新文件夹,将所有“.tif”文件复制到其中。然后,脚本获取所有这些最后的“.tif”文件,并将它们调整为使用( w / 2 )和height( h / 2 )的新值。< / p>
一切都好,直到这里。
现在出现了问题。我想裁剪文件没有任何扭曲,但我不知道该怎么做。
让我们看一个真实的例子(我正在测试的例子)。
我在一个名为“test”的文件夹中有一张40x40cm的图像。我用这些值执行脚本:w = 30,h = 15,folder =“test”。 当我运行脚本时,我得到一个名为“ALTA”的“test”新文件夹,图像大小调整为15x7,5cm。这是正确的。但是当我打开文件时,它并没有被破坏。它垂直变形了。我想得到的是这个结果,但是图像垂直裁剪,我得到一个变形的图像。
我尝试了 crop(),resizeCanvas()函数,但我无法得到我期待的结果。
你能帮我解决一下我的问题。
提前感谢您的时间。
答案 0 :(得分:0)
尝试:
img_file.resizeImage(null, UnitValue(h, "cm"), null, ResampleMethod.BICUBIC);
if(img_file.width < w){
img_file.resizeImage(UnitValue(w, "cm"), null, null, ResampleMethod.BICUBIC);
}
(另外:我在这台机器上没有Photoshop,所以这是未经测试的代码,但基本上你需要先调整高度,然后在裁剪图像之前放大宽度,如果它小于你想要的宽度)< / p>
答案 1 :(得分:0)
现在有效:
// resizeImage([width] [, height] [, resolution] [, sampleMethod] [, amount]);
img_file.resizeImage(UnitValue(w, "cm"), null, null, ResampleMethod.BICUBIC);
// crop(bounds [, angle] [, width] [, height]);
// bounds = array[left, top, right, bottom]
bounds = [
0,
0,
w*10,
h*10
];
img_file.crop(bounds);
下一步将从图像中心裁剪(现在从左上角开始裁剪)。
PD:我已经完成了w * 10和h * 10,因为如果原始w = 30且h = 30,例如,它将图像裁剪为w-> 3和h-> 3。 / p>