无需在PS-CS6脚本中打开图像即可获得图像的宽度和高度

问题描述 投票:0回答:1

我竭力在文档(12)中搜索答案,但找不到任何人。考虑到我们有硬盘中某些文件夹中的文件数组。我们要根据其文件的大小在此数组中过滤这些文件。这就是说,同时过滤两侧(宽度或高度)均比某个值and lower小于某个值的图像。当然,我们可以以Document的形式打开PS中的每个文件,并通过app.activeDocument.widthapp.activeDocument.height属性检查每个文件,然后选择最高的文件并进行匹配。但这是效率极低的,尤其是当我们有数百个文件但只有少数文件满足条件时。所以我的问题是:是否有可能在不打开图像的情况下检查widthheight?如果不需要安装第三方软件就可以实现,那就太好了。如果不是这样,那就不必手动安装(某些独立版本),那就太好了。即使不满足此条件,也比没有人解决方案要好。

代码:

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)中的答案,但找不到任何人。请考虑我们有硬盘中某些文件夹中的文件数组。我们要在此过滤这些文件...

javascript photoshop photoshop-script
1个回答
0
投票
[不确定您要寻找什么样的答案,因为您似乎想编写Javascript,但是您不希望Photoshop打开图像,所以我建议您可以使用

ImageMagick

© www.soinside.com 2019 - 2024. All rights reserved.