【问题标题】:Running Photoshop scripts from PHP?从 PHP 运行 Photoshop 脚本?
【发布时间】:2014-10-17 06:55:41
【问题描述】:

我正在创建一个网络服务,该服务围绕用户根据他们在网页上输入的详细信息创建自定义图像文件。我已经完成了 PSD 文件以及随附的脚本,但是如何直接从我的 PHP 代码启动 Photoshop 脚本?

我研究过使用 Droplets,但据我所知,我只能使用这些来对文件执行记录的操作。

【问题讨论】:

  • 请提供一些您尝试过的代码,以便问题更容易理解。
  • 我不知道如何才能更简单地表达它。没有代码,因为我在问如何完成它。 PHP 脚本对 Photoshop 脚本 (.jsx) 进行编辑,当针对匹配的 PSD 运行该脚本时,将按照用户指定的方式进行所有编辑。似乎没有办法从命令行等启动它们,那么我该如何完成呢?
  • 不幸的是,我不知道 Photoshop 脚本是如何工作的。你的意思是你想用PHP打开一个文件?
  • 我想使用 Photoshop 脚本提交对 Photoshop .PSD 文件的更改。我知道可以做到,只是不知道该怎么做。
  • 您好,您有解决方案吗,如果有请与我分享。

标签: php photoshop photoshop-script


【解决方案1】:

这是可能的,但您需要提供更多关于您希望完成的任务的详细信息。这个服务器是mac还是windows?能够运行 Photoshop 的东西。

这是一个在终端的 Mac 上使用 Photoshop 从 PHP 执行 PS 脚本的内联示例。

$ php -r "`open -b \"com.adobe.Photoshop\" myPhotoshopScript.jsx`;"

或者更好的是,使用Symfony ProcessFilesystem 组件来管理它。

use Symfony\Component\Process\Process;
use Symfony\Component\Process\ProcessBuilder;
use Symfony\Component\Filesystem\Filesystem;

$fs = new Filesystem();

$photoshopProcessBuilder = new ProcessBuilder();
$photoshopProcessBuilder->setPrefix('open -b "com.adobe.Photoshop"');

if ($fs->exists($photoshopScriptFile)) {

    $photoshopProcessBuilder->setArguments(array($photoshopScriptFile));

    $photoshopScriptRunnerProcess = $photoshopProcessBuilder->getProcess();
    $photoshopScriptRunnerProcess->run();

    if (!$photoshopScriptRunnerProcess->isSuccessful()) {
        throw new \RuntimeException($photoshopScriptRunnerProcess->getErrorOutput());
    }

    // do some other stuff
}

【讨论】:

  • 感谢您的回复。有问题的服务器是 Windows,Symfony 方法看起来确实是一种更好的方法。我在我的手机上,不能看,但是 Symfony 有一个用于访问 COM 对象的库吗?如果我可以访问 Photoshop 的 COM API 来阻止实际的 GUI 在服务器上启动,那就完美了。
  • @pablo 酷,我还需要尝试如何在 Windows 上进行操作,应该非常相似。什么是 COM API?我从来没有听说过这个。 :)
【解决方案2】:

看起来唯一可以做到的方法是记录加载脚本的动作并从动作中创建一个 Droplet,然后从 PHP 执行它,并将 PSD 作为参数传递。它没有我想要的优雅,但似乎没有任何其他建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 2014-03-02
    • 2017-11-04
    • 2012-11-28
    • 2017-10-22
    • 2012-03-28
    • 2013-11-13
    • 2012-06-01
    相关资源
    最近更新 更多