2010-01-28 56 views
2

是否有可能通過使用Photoshop的腳本功能上傳圖像從Photoshop(例如,一個開放的圖像導出到JPEG)到一些網站的地方 - REST服務,FTP等?例如 - 我在Photoshop中打開一個圖像,然後執行一些特殊的腳本,將其導出的版本發送到網上的某個地方。我看到類似這樣的東西,但它使用自動生成的批處理文件,在Windows上執行ftp命令。如果可能的話,我想用更漂亮的東西。或者可能有一些信息知道如何爲此任務製作一個簡單的插件。謝謝。上傳圖像與Photoshop腳本

回答

0

將文件上傳到REST Web服務的標準方式是: 1.使用包含正文中圖像流的Content-Type:application/octet-stream的POST。 2.開機時使用「SLUG」標題提供圖像文件名稱。

我不知道什麼樣的API PhotoShop公開,但我想有一個API來讀取圖像流,所以使用這個API,您可以準備所需的POST請求並將圖像添加到您的服務器:-)

希望我幫助, 吉文

0

在Photoshop中的API的不允許網絡訪問。他們只是控制Photoshop,並且僅限於您可以在Photoshop中執行的用戶操作。

我建議使用Automator或其他外部腳本語言來後處理photoshop的輸出。

0

如果Photoshop API不支持網絡訪問,您可以嘗試從腳本加載Flash/Flex文件,然後在swf中進行上載。

6

Photoshop的API公開一個Socket對象。您可以這樣使用它

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; 
} 
+0

驚人的雨果。你在哪裏找到這個文檔? – 2015-11-16 22:37:49

+1

我在論壇上發現它,有很多腳本示例和共享代碼。 論壇是你要看的地方。自從我做了這些事情已經很長時間了。 – 2015-11-17 11:52:23

相關問題