如何按 x,y,width,height 裁剪文件夹中的所有图像,调整它们的大小,然后保存它们?

Posted

技术标签:

【中文标题】如何按 x,y,width,height 裁剪文件夹中的所有图像,调整它们的大小,然后保存它们?【英文标题】:How can I crop by x,y,width,height all images in a folder, resize them, then save them? 【发布时间】:2014-03-12 23:19:06 【问题描述】:

我是 Photoshop 脚本的新手,但对 javascript 并不陌生。

我有一个 1024*1024 的图像文件夹,它们是 3d 程序中的动画帧。

对于所有的帧,只有 x=54、y=12、width=300、height=234 的区域。

裁剪后,我希望它们按 65% 或任何我想要的比例缩放。

或者,我希望对源图像进行缩放,图像移动 x / y 坐标,缩小 65%,这样外部像素就不会出现在最终产品中。

没有 psd 可言,我假设脚本会创建一个空白 psd,并且很可能会将其回收用于批量裁剪/调整大小。

【问题讨论】:

【参考方案1】:

尝试按照这些方式进行裁剪和调整大小。如果这是您所追求的,您还可以在保存之前将所有图像复制到单个 PSD 中,但此示例仅保存原始文档。有关更多信息,请查看 Photoshop 安装目录中的 Photoshop JavaScript Reference pdf。

var dir = new Folder('/c/temp')
var files = dir.getFiles("*.psd");  //change for whatever file type you have

for (var i = 0; i < files.length; i++) 
    var doc = app.open(files[i]);
    var bounds = [54, 12, 354, 246];
    doc.crop(bounds);

    //do the math to figure out how big you want it after resize
    doc.resizeImage(newWidth, newHeight);

    //note this is saving over the original!!!!
    doc.close(SaveOptions.SAVECHANGES)

【讨论】:

'crop' 会将其降低到任意指定的范围。就像使用选择工具将选择拖出一样。修剪适用于透明区域或角落的像素颜色。 我实现了代码并且效果很好。谢谢你安娜!如果你能指导我如何将它保存为另一个文件夹中的 png,我会永远珍惜你 :D doc.saveAs(newFilePath, pngOptions)。查看文档中的 PNGSaveOptions 对象以获取最后一个参数 永远珍惜 Anna Forrest【参考方案2】:

为什么不直接在 Photoshop 中记录动作???

打开第一个文件并创建一个新动作。 使用裁剪工具或画布调整大小继续根据需要修剪画布。 根据需要在文件夹上以批处理方式运行该操作。

【讨论】:

以上是关于如何按 x,y,width,height 裁剪文件夹中的所有图像,调整它们的大小,然后保存它们?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用imagemagick转换进行缩放和裁剪?

如何将canvas轨迹保存为动画

缩放图像直到 X 或 Y 与容器相同,然后裁剪其余部分

通过精确裁剪图像来删除 while 循环

提供 x,y,width 和 height 值,我如何获得从中心缩放的 svg 变换矩阵

如何设置wms参数(bbox、width、height、x、y)