2013-12-21 60 views
1

我已經花了最後一天半的時間將一些複雜的數學圖形渲染成數百個文件,並且現在才意識到我忘記從圖像的右下角刪除一個小白盒了!Photoshop CS5腳本填充內容知道

所以我希望自動修復。我已經能夠手動使用photoshop cs5中的內容感知填充來移除它,並且希望編寫一個JavaScript腳本來爲其他數百人使用。

但是,在Selection.fill(...)的javascript參考中,filltype參數是SolidColor類型。這是使用填充的唯一方法嗎?奇怪的是,在本文檔中搜索內容時沒有提供任何內容,因此該功能無法編寫腳本?我一直沒有找到這個在線的好運氣,也許是因爲有太多的東西與人們說,這個功能有多驚人,它淹沒了任何腳本結果。

謝謝!

+0

我沒有一個回答,但是您可以在專用於腳本的論壇中查看是否有答案 - > PS腳本(http://www.ps-scripts.com/bb/viewforum.php?f=29&sid=a96b63c16da222fd796821eaa0ec6747)。 –

回答

0

也許這樣做與在photosho中的行動,而不是記錄過程...然後批處理文件夾重新處理所有的圖像?

如果您不熟悉它,請從窗口中打開操作面板,然後創建一個新操作(操作面板中的頁面圖標)。現在只需record您想要處理的步驟,然後在完成時點擊停止按鈕。

一旦動作被記錄,您可以進入批處理菜單並在整個圖像文件夾中循環該動作。

如果您的解決方案在Photoshop中存在一次,爲什麼重新發明輪子?使用現有的工具可以幫助在生產過程中投入的時間。

0

Photoshop Scripting DOM(文檔對象模型)沒有直接支持很多Photoshop的新功能。不過,您仍然可以通過爲腳本創建操作描述符並直接執行事件來訪問這些功能。

如何找出正確的描述符格式和事件?通過查看名爲ScriptListener的插件的輸出。安裝ScriptListener插件後,將在桌面上創建一個日誌文件,將您在Photoshop中執行的所有操作記錄爲可執行的ExtendScript代碼。使用安裝了ScriptListener的Photoshop啓動,執行要編碼的操作,並檢查桌面上的日誌內容以找到適當的ActionDescriptor和事件。

ScriptListener插件發佈在Photoshop Developer Center上。

1

這裏的操作管理器代碼,你會看到ScriptingListener.log:

// ======================================================= 
var idFl = charIDToTypeID("Fl "); 
    var desc62295 = new ActionDescriptor(); 
    var idUsng = charIDToTypeID("Usng"); 
    var idFlCn = charIDToTypeID("FlCn"); 
    var idcontentAware = stringIDToTypeID("contentAware"); 
    desc62295.putEnumerated(idUsng, idFlCn, idcontentAware); 
    var idOpct = charIDToTypeID("Opct"); 
    var idPrc = charIDToTypeID("#Prc"); 
    desc62295.putUnitDouble(idOpct, idPrc, 100.000000); 
    var idMd = charIDToTypeID("Md "); 
    var idBlnM = charIDToTypeID("BlnM"); 
    var idNrml = charIDToTypeID("Nrml"); 
    desc62295.putEnumerated(idMd, idBlnM, idNrml); 
executeAction(idFl, desc62295, DialogModes.NO); 

它有點嚇人,但它可以很容易地修改,以類似的東西:

function contentAwareFill() { 
    //works only with selection 
    try {var SB = activeDocument.selection.bounds} 
    catch (e) {alert('content aware fill needs a selection'); return}; 

    //100% opacity, normal blending content aware fill 
    var desc = new ActionDescriptor(); 
    desc.putEnumerated(charIDToTypeID("Usng"), charIDToTypeID("FlCn"), stringIDToTypeID("contentAware")); 
    executeAction(charIDToTypeID("Fl "), desc, DialogModes.NO); 
}