我竭力在文档(1,2)中搜索答案,但找不到任何人。考虑到我们有硬盘中某些文件夹中的文件数组。我们要根据其文件的大小在此数组中过滤这些文件。这就是说,同时过滤两侧(宽度或高度)均比某个值and lower小于某个值的图像。当然,我们可以以Document
的形式打开PS中的每个文件,并通过app.activeDocument.width
或app.activeDocument.height
属性检查每个文件,然后选择最高的文件并进行匹配。但这是效率极低的,尤其是当我们有数百个文件但只有少数文件满足条件时。所以我的问题是:是否有可能在不打开图像的情况下检查width
和height
?如果不需要安装第三方软件就可以实现,那就太好了。如果不是这样,那就不必手动安装(某些独立版本),那就太好了。即使不满足此条件,也比没有人解决方案要好。
代码:
var sourceFolder = Folder.selectDialog("Select folder with files to process");
var LowestValueOfSides = 50; // Any arbitrary value
var HighestValueOfSides = 100; // Any arbitrary value
var FilesToProcess = getFilesToProcess(sourceFolder, LowestValueOfSides, HighestValueOfSides);
alert(FilesToProcess);
function getFilesToProcess(sourceFolder, LowestValueOfSides, HighestValueOfSides) {
sourceFilesUnfiltered = sourceFolder.getFiles();
var properFilesExtPSfiles = /.(jpg|tif|psd|bmp|gif|png)$/;
var sourceFilesFilteredPSD = filteringSourceFilesByExtensions(sourceFilesUnfiltered, properFilesExtPSfiles);
var sourceFilesFilteredByRes = filteringSourceFilesByRes(sourceFilesFilteredPSD, LowestValueOfSides, HighestValueOfSides);
return sourceFilesFilteredByRes;
}
function filteringSourceFilesByExtensions(sourceFilesUnfiltered, properFilesExtPSfiles) {
var sourceFilesFiltered = new Array;
for (var i = 0; i < sourceFilesUnfiltered.length; i++) {
if (sourceFilesUnfiltered[i] instanceof File) {
var sourceFilePathString = sourceFilesUnfiltered[i].toString();
var sourceFileToMatch = decodeURIComponent(sourceFilePathString);
if (sourceFileToMatch.match(properFilesExtPSfiles)) {// decodeURIComponent(), to avoid problem when you have special signs in source files
sourceFilesFiltered.push( File(sourceFilePathString) );
}
}
}
return sourceFilesFiltered;
}
function filteringSourceFilesByRes(sourceFilesFilteredPSD, LowestValueOfSides, HighestValueOfSides) {
var sourceFilesFilteredByRes = new Array;
for (var i = 0; i < sourceFilesFilteredPSD.length; i++) {
var longestSide = getLongestSideValue(sourceFilesFilteredPSD[i]); // <====== this is function which I have problem
if ( (longestSide >= LowestValueOfSides) && (longestSide <= HighestValueOfSides)) {
sourceFilesFilteredByRes.push(sourceFilesFilteredPSD[i]);
}
}
return sourceFilesFilteredByRes;
}
function getLongestSideValue(File) { // <====== this is function which I have problem
var FileWidth // <===== I need this value
var FileHeight // <===== I need this value
var longestSideValue = Math.max(FileWidth, FileHeight);
return longestSideValue;
}
提前感谢。
我努力搜索文档(1、2)中的答案,但找不到任何人。请考虑我们有硬盘中某些文件夹中的文件数组。我们要在此过滤这些文件...
ImageMagick