是否可以使用 Photoshop 的脚本功能将图像从 Photoshop(例如,导出到 jpeg 的打开图像)上传到某个网站 - REST 服务、FTP 等?例如 - 我在 Photoshop 中打开了一个图像,然后执行一些特殊的脚本,将它的导出版本发送到网络上的某个地方。我看到了类似的东西,但它使用自动生成的批处理文件,在 Windows 上执行 ftp 命令。如果可能的话,我想使用更漂亮的东西。或者可能有一些信息可以知道如何为这个任务制作一个简单的插件。谢谢。
5 回答
Photoshop API 公开了一个套接字对象。你可以像这样使用它
function sendDataToServer(data) {
var socket = new Socket(),
port = 80,
domain = "www.example.com",
page = "/path/to/file.php",
bin;
if(socket.open(domain + ":" + port,"binary")) {
socket.write("GET http://" + domain + page + "?data=" + data + " HTTP/1.0\n\n");
bin = socket.read(9999999);
alert(bin);
socket.close();
}
}
这将返回服务器响应以及请求的标头。您可以使用以下方法读取文件:
function getLine(html){
var line = "", i = 0;
for (; html.charCodeAt(i) != 10; i++){ // finding line end
line += html[i] ;
}
return line;
}
此方法还将使用以下getLine
方法去除标题:
function removeHeaders(binary){
var bContinue = true, // flag for finding end of header
line = "",
nFirst = 0,
count = 0;
while (bContinue) {
line = getLine(binary) ; // each header line
bContinue = line.length >= 2 ; // blank header == end of header
nFirst = line.length + 1 ;
binary = binary.substr(nFirst) ;
}
return binary;
}
Photoshop 中的 API 不允许网络访问。它们只是控制 Photoshop,并且仅限于您可以在 Photoshop 中执行的用户操作。
我建议使用 Automator 或其他外部脚本语言对 Photoshop 的输出进行后处理。
将文件上传到 REST Web 服务的标准方法是: 1. 使用带有 Content-Type 的 POST:application/octet-stream,包括正文中的图像流。2. POST 时使用“SLUG”标头来提供图像文件名。
我不知道 PhotoShop 公开了什么样的 API,但我想有一个 API 可以读取图像流,所以使用这个 API,您可以准备所需的 POST 请求并将图像添加到您的服务器:-)
希望我能帮上忙,谢伊
可能在 Photoshop 中使用 JavaScript:
http://www.adobe.com/devnet/bridge/pdfs/javascript_tools_guide_cs3.pdf
如果 Photoshop API 不支持网络访问,您可以尝试从脚本加载 Flash/Flex 文件,然后在 swf 中进行上传。