2

我正在寻找进行 Photoshop 操作(也许这是不可能的,任何其他应用程序建议也会有所帮助)。我想拍摄一组照片并将它们设置为特定的宽高比,例如:4:3。

所以我有一个 150px 宽 x 200px 高的图像。我想要发生的是图像的画布宽度为 267 像素,新区域填充了某种颜色。

所以我能想到两种可能:

1) Photoshop 动作可以做到这一点,但我必须拉当前高度,乘以 1.333333,然后将该值放入画布调整大小的宽度框中。是否可以在 Photoshop 动作中计算值?

2)其他一些应用程序内置了此功能。

任何帮助是极大的赞赏。

4

3 回答 3

8

哇,我现在看到(在写完答案之后)这是很久以前被问到的。. . 那好吧。这个脚本可以解决问题。

此 Photoshop 脚本将调整任何图像画布的大小,使其具有 4:5 的纵横比。您可以通过更改 arWidth 和 arHeight 来更改应用的纵横比。填充颜​​色将设置为当前背景颜色。您可以创建一个操作来打开文件,应用此脚本,然后关闭文件以执行批处理。

关闭 Photoshop。
将此 javascript 复制到 Photoshop 的 Presets\Scripts 文件夹中名为“Resize Canvas.jsx”的新文件中。
启动 Photoshop 并在 File - Scripts 菜单中出现。

#target photoshop

main ();

function main ()
{
    if (app.documents.length < 1)
    {
        alert ("No document open to resize.");
        return;
    }

    // These can be changed to create images with different aspect ratios.
    var arHeight = 4;
    var arWidth = 5;

    // Apply the resize to Photoshop's active (selected) document.
    var doc = app.activeDocument;

    // Get the image size in pixels.
    var pixelWidth = new UnitValue (doc.width, doc.width.type);
    var pixelHeight = new UnitValue (doc.height, doc.height.type);
    pixelWidth.convert ('px');
    pixelHeight.convert ('px');

    // Determine the target aspect ratio and the current aspect ratio of the image.
    var targetAr = arWidth / arHeight;
    var sourceAr = pixelWidth / pixelHeight;

    // Start by setting the current dimensions.
    var resizedWidth = pixelWidth;
    var resizedHeight = pixelHeight;

    // The source image aspect ratio determines which dimension, if any, needs to be changed.
    if (sourceAr < targetAr)
        resizedWidth = (arWidth * pixelHeight) / arHeight;
    else
        resizedHeight = (arHeight * pixelWidth) / arWidth;

    // Apply the change to the image.
    doc.resizeCanvas (resizedWidth, resizedHeight, AnchorPosition.MIDDLECENTER);
}
于 2011-03-16T19:12:21.487 回答
2

请注意,如果源图像的像素/英寸不同于 72,则来自@user268911 的接受答案可能对您不起作用。因为UnitValue.convert函数仅适用于 72 像素/英寸。为确保转换对于任何像素/英寸值都是正确的,请按如下方式设置baseUnit属性:

 ...
 var pixelWidth = new UnitValue (doc.width, doc.width.type);
 pixelWidth.baseUnit = UnitValue (doc.width.baseUnit, "in");
 var pixelHeight = new UnitValue (doc.height, doc.height.type);
 pixelHeight.baseUnit = UnitValue (doc.height.baseUnit, "in");
 ...

有关转换的更多详细信息,请参阅Adob​​e JavaScript 工具指南的“转换像素值和百分比值”部分。

于 2017-08-28T20:35:06.630 回答
0

你懂什么语言?ImageMagick 具有可以执行此操作的命令行工具,但您需要了解一种脚本语言才能获取值并计算新值。

对于.NET,我公司的产品DotImage Photo是免费的,可以做到(需要懂C#或者VB.NET)

于 2010-11-29T21:53:33.620 回答