使用来自Web应用程序的Photoshop文件

6

我希望能够与Photoshop文件交互,并使用其动作和智能对象创建图像。

是否有任何php或C# API可以实现这一功能?


你想做一个网络应用程序吗? - fiso
是的,我想在我的网站应用程序中使用Photoshop。 - Ehsan
请查看此问题:https://dev59.com/3V_Va4cB1Zd3GeqPTW4H - Bryan Waters
5个回答

8
首先,我希望你能反思一下这样做是否合法。 Adobe会让你将他们的应用程序实际代理到Web上吗?我看到他们有很多许可证,所以也许其中一个实际授权你这样做(但是,仍然可能存在注意事项,因此建议你阅读相关信息)。因为这不是问题,所以我不会再谈论这个问题,我只是想提一下,因为它应该是相关的。
现在,关于实际问题-如果你查看Microsoft Office互操作性,Microsoft表示它不支持服务器端环境。请前往此Microsoft页面并阅读更多信息部分中的“使用Office服务器端自动化的问题”。
正如在上述页面中所述,如果您决定在服务器端运行常规客户端应用程序,则存在几个问题,但其中最重要的问题之一是:
交互式桌面:Office应用程序假定它们正在交互式桌面下运行。在某些情况下,应用程序可能需要显示某些自动化功能才能正确工作。如果发生意外错误,或者需要未指定的参数来完成函数,则Office会设计提示用户使用模态对话框框,询问用户要执行什么操作。非交互式桌面上的模态对话框无法被解除。因此,该线程将无限期地停止响应(挂起)。尽管某些编码实践可以帮助减少此问题的可能性,但这些实践无法完全避免此问题。光是这个事实就使得从服务器端环境运行Office应用程序变得不安全且不受支持。
虽然这是由Microsoft为其产品编写的,但这些或多或少适用于任何常规客户端应用程序。即使你仍然决定采用这种方法,正如Neville K已经建议的那样,这将是一个非常耗费资源的任务。
考虑到以上情况,我可能会问一个不同的问题,例如“使用哪个库或服务器端应用程序来处理图像”。

4
根据此链接,您可以使用Photoshop SDK完成以下操作: “使用Photoshop SDK,您可以通过TCP连接使应用程序驱动和/或与Photoshop CS6(版本13.0.0或更高版本)通信。现在可以创建一个Photoshop教程电子书,允许用户从电子书内部驱动Photoshop CS6中的操作。”

3
这听起来很难,但是有些公司似乎做到了Xee也可以读取PSD格式(并在源代码中关于此格式有史诗级的评论)。
但是引用HN上的某人的话
PSD从未旨在成为数据交换格式:它是一个单个程序的序列化格式,该程序具有比几乎任何其他软件都更多的不相关特征,并且在其存在的20多年中保持了惊人的向后兼容性和几乎无间断的向前兼容性。因此,在这种背景下需要批评这个产品的“文件格式”,以及类似的大型程序如Office。因此,我很难理解为什么任何人都会认为PSD文件将成为一种他们应该能够轻松解析的良好组织的文件格式,这只是幼稚的一厢情愿:即使是Adobe的其他产品在打开这些文件时也有限制;要真正操作这些文件,您确实需要与Photoshop的特定编辑模型高度兼容(因此这两类文件格式之间的概念差异)。我建议使用Xee作为服务器端实用程序。祝你好运。

非常感谢你,达米恩。我现在正在访问你的主页。 - Ehsan

2
请注意警告,Photoshop每次只能处理1或2张图片,否则会导致服务器崩溃,因此仅将其放在网络服务器上是不可行的。更轻量级的图像库对于大多数任务来说更好。
但是,您可以从Web应用程序排队作业,然后在另一台计算机上处理它们,或者仅限制为一次处理一个。
Adobe拥有基于宏和完整动作/JavaScript脚本的环境,您可以从命令行或com启动它们。 Adobe脚本指南

http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop_cs5_scripting_guide.pdf

对于旧版本的Photoshop,您可以使用宏功能来记录操作。然后,从该操作创建一个滴答(Droplet)。使用图像文件作为唯一参数从命令行调用该滴答。图像文件的路径可能需要是绝对路径。

2

如果你真的想要,你可以使用脚本接口从任何网络语言开始“Shell”任务。

然而,我会认真考虑这种方法 - Photoshop的内存需求是如此之高,以至于您只能支持几个用户,并且您需要一个相当复杂的轮询机制来检查“shell”任务的结果。Photoshop根本没有被设计成以这种方式驱动网站。

考虑使用图形库 - 我曾经使用过ImageMagick,效果非常好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接