在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 圖形圖像教程 > 詳細頁面

如何編寫一個Photoshop濾鏡-- Scripting Plug-ins

如何編寫一個Photoshop濾鏡-- Scripting Plug-ins

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片...
Adobe Photoshop,簡稱“PS”,是由Adobe Systems開發和發行的圖像處理軟件。Photoshop主要處理以像素所構成的數字圖像。使用其眾多的編修與繪圖工具,可以有效地進行圖片編輯工作。ps有很多功能,在圖像、圖形、文字、視頻、出版等各方面都有涉及。
在第一篇文章中我們建立了一個沒有UI的基本濾鏡框架,并且引入PIPL資源使之能被PS加載到菜單。在第二篇文章中我們又引入了濾鏡參數和相應的對話框資源,并且講解了對話框在濾鏡調用流程中的顯示時機。這一篇文章我們將使濾鏡支持動作記錄和回放,也就是通過添加“術語資源”,使我們的濾鏡參數被PS的腳本系統所獲知(scripting-aware),并能夠記錄和回放。

從Photoshop 4.0開始引入了一個新的面板以及相應的命令和回調函數:動作面板(浮動窗口),以及Descriptor 回調函數集。動作面板是Photoshop腳本系統用于和用戶交互的接口,也是其核心所在。Photoshop 5.0擴展了動作結構,使自動化插件能夠支持可描述的Photoshop命令。(《Photoshop API Guide》第11章)

關于PS的 Scripting System,其來源是 PS 對蘋果系統的事件和腳本機制的繼承和支持,PS 的開發同時針對兩種操作系統平臺。這里我們介紹如何使我們的濾鏡被PS腳本系統接納。

首先我們需要在 r文件中增加術語資源(terminology resource)。因此首先在 pipl 資源中增加一個 HasTerminology 結構,其定義如下:

//這個屬性指明濾鏡是否提供了 'aete'資源。

typedef struct HasTerminology

{

int32 classID; // classID from 'aete'

int32 eventID; // eventID from 'aete' or NULL if none

int16 aeteResNum; // number of 'aete' resource

CString uniqueID; // unique ID string (UUID or your own ?/?). If present,

ignores AppleScript and keeps local to Photoshop.

} HasTerminology;

這個結構將被增加到 r文件的 pipl資源內。下面我們在pipl資源后面添加了 aete 資源。

在此前我們在一個通用的頭文件中添加一些aete資源需要的定義:

//定義 Scripting Keys
#define KEY_FILLCOLOR        'fiCo'
#define KEY_OPACITY            'opcA'

#define plugInSuiteID        'filR'
#define plugInClassID        'filR'
#define    plugInEventID        'filR'
#define    plugInUniqueID        "18EC4E8F-DB34-4aff-AF99-77C8013BD74F"
#define plugInAETEComment    "FillRed example filter By hoodlum1980"
#define vendorName            "hoodlum1980"


//定義 Scripting Keys
#define KEY_FILLCOLOR 'fiCo'
#define KEY_OPACITY 'opcA'

#define plugInSuiteID 'filR'
#define plugInClassID 'filR'
#define plugInEventID 'filR'
#define plugInUniqueID "18EC4E8F-DB34-4aff-AF99-77C8013BD74F"
#define plugInAETEComment "FillRed example filter By hoodlum1980"
#define vendorName "hoodlum1980"

上面我們把我們的濾鏡,濾鏡的參數都定義為了鍵,關于鍵定義,需要符合以下原則:

(a)它必須由4個字符組成。不夠4個字符可以結尾用空格補足。

(b)用戶定義的鍵名應該以小寫字母開頭,同時至少含有一個大寫字母。(因為全大寫,全小寫鍵名屬于Apple定義)。

濾鏡的唯一標識符采用VC工具生成的GUID即可。

然后我們對r文件增加aete 資源,aete 資源模板如下:

resource 'aete' (0)

{ // aete version and language specifiers

{ /* suite descriptor */

{ /* filter/selection/color picker descriptor */

{ /* any parameters */

/ * additional parameters */

}

},

{ /* import/export/format descriptors */

{ /* properties. First property defines inheritance. */

/* any properties */

},

{ /* elements. Not supported for plug-ins. */

},

/* class descriptions for other classes used as parameters or properties */

},

{ /* comparison ops. Not currently supported. */

},

{ /* any enumerations */

{

/* additional values for enumeration */

},

/* any additional enumerations */

/* variant types are a special enumeration: */

{

/* additional types for variant */

},

/* any additional variants */

/* class and reference types are a special enumeration: */

{

},

/* any additional class or reference types */

}

}

}

請注意的是這是一個針對PS插件的aete資源模板,也就是說它不僅僅針對濾鏡,也包括其他種類的PS插件。關于其具體含義這里我們不做詳細討論,可以參考相關PS SDK文檔。

【注意】即使有的節不需要,也必須提供一個空的花括號占位,而不能有缺失。

下面我們給出添加了aete資源后的 FillRed.r 文件,內容如下:

// ADOBE SYSTEMS INCORPORATED
// Copyright  1993 - 2002 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE:  Adobe permits you to use, modify, and distribute this 
// file in accordance with the terms of the Adobe license agreement
// accompanying it.  If you have received this file from a source
// other than Adobe, then your use, modification, or distribution
// of it requires the prior written permission of Adobe.
//-------------------------------------------------------------------------------
#define plugInName            "FillRed Filter"
#define    plugInCopyrightYear "2009"
#define plugInDescription \
    "FillRed Filter.\n\t - http:\\www.cnblogs.com\hoodlum1980"

#include "E:\Codes\Adobe Photoshop CS2 SDK\samplecode\common\includes\PIDefines.h"

#ifdef __PIMac__
    #include "Types.r"
    #include "SysTypes.r"
    #include "PIGeneral.r"
    #include "PIUtilities.r"
    #include "DialogUtilities.r"
    #include "CommonDefine.h"        /* 包含了術語定義 */
#elif defined(__PIWin__)
    #define Rez
    #include "PIGeneral.h"
    #include "E:\Codes\Adobe Photoshop CS2 SDK\samplecode\common\resources\PIUtilities.r"
    #include "E:\Codes\Adobe Photoshop CS2 SDK\samplecode\common\resources\WinDialogUtils.r"
    #include "CommonDefine.h"        /* 包含了術語定義 */
#endif

#include "PITerminology.h"
#include "PIActions.h"                /* 包含對 NO_REPLY 的定義 */

resource 'PiPL' ( 16000, "FillRed", purgeable )
{
    {
        Kind { Filter },
        Name { plugInName },
        Category { "Demo By hoodlum1980" },
        Version { (latestFilterVersion << 16) | latestFilterSubVersion },
        #ifdef __PIWin__
            CodeWin32X86 { "PluginMain" },
        #else
            CodeMachOPowerPC { 0, 0, "PluginMain" },
        #endif

        SupportedModes
        {
            noBitmap, doesSupportGrayScale,
            noIndexedColor, doesSupportRGBColor,
            doesSupportCMYKColor, doesSupportHSLColor,
            doesSupportHSBColor, doesSupportMultichannel,
            doesSupportDuotone, doesSupportLABColor
        },
        
        HasTerminology
        {
            plugInClassID,
            plugInEventID,
            16000,                /* int16 aeteResNum;  number of 'aete' resource */
            plugInUniqueID
        },
            
        EnableInfo
        {
            "in (PSHOP_ImageMode, RGBMode,"
            "CMYKMode, HSLMode, HSBMode, "
            "DuotoneMode, LabMode)"
        },

        PlugInMaxSize { 2000000, 2000000 },

        FilterCaseInfo {
            {    /* array: 7 elements */
                /* Flat data, no selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Flat data with selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Floating selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Editable transparency, no selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Editable transparency, with selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Preserved transparency, no selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination,
                /* Preserved transparency, with selection */
                inStraightData,
                outStraightData,
                doNotWriteOutsideSelection,
                doesNotFilterLayerMasks,
                doesNotWorkWithBlankData,
                copySourceToDestination
            }
        }
    }
};


resource 'aete' (16000, "FillRed dictionary", purgeable)
{
    1, 0, english, roman,                                    /* aete version and language specifiers */
    {
        vendorName,                                            /* vendor suite name */
        "FillRed Demo By hoodlum1980",                        /* optional description */
        plugInSuiteID,                                        /* suite ID */
        1,                                                    /* suite code, must be 1 */
        1,                                                    /* suite level, must be 1 */
        {                                                    /* structure for filters */
            plugInName,                                        /* unique filter name */
            plugInAETEComment,                                /* optional description */
            plugInClassID,                                    /* class ID, must be unique or Suite ID */
            plugInEventID,                                    /* event ID, must be unique to class ID */
            
            NO_REPLY,                                        /* never a reply */
            IMAGE_DIRECT_PARAMETER,                            /* direct parameter, used by Photoshop */
            {                                                /* parameters here, if any */
                "FillColor",                                /* parameter name */
                KEY_FILLCOLOR,                                /* parameter key ID */
                typeInteger,                                /* parameter type ID */
                "Fill color in RGB",                        /* optional description */
                flagsSingleParameter,                        /* parameter flags */
                
                "Opacity",                                    /* optional parameter */
                KEY_OPACITY,                                /* key ID */
                typeInteger,                                /* type */
                "opacity in RGB",                            /* optional desc */
                flagsSingleParameter                        /* parameter flags */
            }
        },
        {                                                    /* non-filter plug-in class here */
        },
        {                                                    /* comparison ops (not supported) */
        },
        {                                                    /* any enumerations */
        }
    }
};

在上面的文件中,我們可以看到我們的濾鏡含有的兩個主要參數:填充顏色 和 不透明度。位于 IMAGE_DIRECT_PARAMETER 結構中,typeInteger 指明它們是整數類型。flagsSingleParameter指明它們是基本類型(具有單一值)。此外,還可以把參數定義為枚舉類型,同時把枚舉的值域定義放在最后一節中,這里我們對此不做介紹了。

怎樣編寫一個Photoshop濾鏡-- Scripting Plug-ins

濾鏡被重新編譯后,我們在PS中對它錄制一個動作,命名為“測試 FillRed”,錄制完成后,可以看到在動作面板上的左側,出現了對話框選項的CheckBox,我們可以設置播放時是否彈出對話框。我們把FillRed濾鏡命令的下拉列表展開可以看到濾鏡參數:

FillColor: 10

Opacity:90

請注意參數的名字就是來自于上面的aete資源中的定義的濾鏡參數名字屬性,這就是我們需要給它定義一個可讀的參數名的原因。需要注意的是,由于我們把對話框上三個參數合成為了一個參數,這就使得上面的參數顯示是三個參數的合成值(10進制)。因此這里為了看清楚,我就只設置了 R 和 O1,其他參數都為0,這樣我們在動作面板看到的參數值就和濾鏡的對話框上的參數值是一致的。否則我們看到的將是三個參數合成后的值。

更多怎樣編寫一個Photoshop濾鏡-- Scripting Plug-ins相關文章請關注PHP中文網!


Photoshop默認保存的文件格式,可以保留所有有圖層、色版、通道、蒙版、路徑、未柵格化文字以及圖層樣式等。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 69sex久久精品国产麻豆| a级黄色片网站| www.69av| 99热这里只有精品免费| 日韩精品aaa| 国产精品无码av无码| aa在线免费观看| 中国丰满熟妇xxxx性| 免费看黄色a级片| 狠狠干视频网站| www.日本三级| 日本在线xxx| 少妇高清精品毛片在线视频| 男人天堂网视频| www.色就是色| 国产无遮挡猛进猛出免费软件| 韩国中文字幕av| 蜜桃福利午夜精品一区| 中文字幕剧情在线观看| 精品一区二区三区毛片| 很污的网站在线观看| 免费欧美一级视频| 爆乳熟妇一区二区三区霸乳| 日本黄大片一区二区三区| 永久免费在线看片视频| 人人妻人人澡人人爽欧美一区双| 日本www在线视频| the porn av| 老司机午夜网站| 农村妇女精品一二区| 中文字幕资源在线观看| 国产日韩亚洲欧美在线| 爆乳熟妇一区二区三区霸乳| 97人人模人人爽人人澡| 日韩精品一区二区三区四| 少妇高清精品毛片在线视频| 亚洲第一天堂久久| 九九九九免费视频| 国产精品亚洲天堂| 国产视频一区二区三区在线播放| 亚洲一二三不卡| 国产一区二区在线视频播放| 午夜av中文字幕| 99草草国产熟女视频在线| 可以在线看黄的网站| 人妻丰满熟妇av无码区app| 99re8这里只有精品| 无需播放器的av| 精品视频在线观看一区| 青春草在线视频免费观看| 国产福利一区视频| 国产黄页在线观看| 佐佐木明希av| 色啦啦av综合| 国产精品久久a| 国产精品99久久免费黑人人妻| 国产精品88久久久久久妇女| 制服丝袜综合网| 国产一级片黄色| 91免费视频网站在线观看| 搞av.com| 777av视频| 日韩精品在线中文字幕| 日本三日本三级少妇三级66| 爽爽爽在线观看| 视频在线观看免费高清| 色一情一区二区| 一女二男3p波多野结衣| jizz欧美性11| 天堂在线资源视频| 九色91popny| 色婷婷狠狠18| www.久久91| 国产一区二区在线观看免费视频| 国内国产精品天干天干| 国产小视频精品| 波多野结衣国产精品| 异国色恋浪漫潭| 国产精品国三级国产av| www污在线观看| 国产一区二区在线视频播放| 黑人糟蹋人妻hd中文字幕| 黄在线观看网站| 一道本视频在线观看| 亚洲一区二区福利视频| 91蝌蚪视频在线| 成人免费网站入口| 成人三级视频在线播放 | 日韩av在线播放不卡| 日韩av综合在线观看| 亚洲欧美另类动漫| 国产毛片久久久久久| 成人免费网站入口| 日韩一级片播放| 强开小嫩苞一区二区三区网站 | 1314成人网| 国产极品尤物在线| www.com黄色片| 人妻无码久久一区二区三区免费 | 国产精品视频分类| youjizz.com在线观看| 午夜激情在线观看视频| 天堂网成人在线| 日韩中文字幕在线视频观看 | a级免费在线观看| 欧美成人免费高清视频| 毛毛毛毛毛毛毛片123| 美女av免费在线观看| 亚洲欧美一二三| 亚洲少妇第一页| www.男人天堂网| 日韩av自拍偷拍| 动漫av网站免费观看| 香蕉精品视频在线| 中文字幕一区二区三区四区在线视频| www激情五月| 日韩视频在线免费看| www.xxx麻豆| 浴室偷拍美女洗澡456在线| 婷婷六月天在线| 日韩黄色片视频| www.xxx麻豆| 日韩精品久久一区二区| 婷婷中文字幕在线观看| 91插插插插插插插插| 国产高清精品在线观看| 全黄性性激高免费视频| 久久久久久久免费视频| 国产美女18xxxx免费视频| 激情综合网婷婷| 久久久久久久少妇| 白嫩少妇丰满一区二区| 日韩a在线播放| 青青草原成人网| 日韩av在线综合| 一区二区三区国产免费| 日日碰狠狠躁久久躁婷婷| 欧美极品欧美精品欧美图片| 日韩精品 欧美| 妺妺窝人体色www看人体| 黑人巨大国产9丨视频| 欧美日韩亚洲国产成人| 亚洲自拍偷拍一区二区三区| 男人天堂成人网| 免费高清一区二区三区| 亚洲中文字幕无码专区| 欧美色图另类小说| 日韩一区二区三区不卡视频| 国内自拍第二页| 成年在线观看视频| 免费看国产曰批40分钟| 韩国视频一区二区三区| 亚洲精品20p| 久草视频这里只有精品| 97成人在线免费视频| 日日噜噜噜噜久久久精品毛片| 午夜精品久久久久久久99热影院| 奇米777在线| 日韩一级性生活片| 欧美日韩亚洲一二三| 婷婷中文字幕在线观看| 男人添女荫道口女人有什么感觉| 韩国日本在线视频| 一级黄色在线播放| 国产精彩视频一区二区| 小泽玛利亚视频在线观看| 好吊色这里只有精品| 国产淫片免费看| 91免费网站视频| 精品99在线视频| 大片在线观看网站免费收看| 波多野结衣家庭教师视频| 波多野结衣网页| 欧美韩国日本在线| 大片在线观看网站免费收看| 热久久精品免费视频| 国产女教师bbwbbwbbw| 黄色小视频免费网站| 黄色国产一级视频| 国产麻豆电影在线观看| 久久婷五月综合| 日本毛片在线免费观看| 日韩中文在线字幕| 亚洲人视频在线| 亚洲精品乱码久久久久久自慰| 欧洲金发美女大战黑人| 午夜免费看视频| 男人搞女人网站| 成人免费观看毛片| 精品国产av无码一区二区三区| 亚洲AV无码成人精品一区| 日韩中文字幕免费在线| 91视频最新入口| 91精品91久久久中77777老牛| 成人av在线播放观看| 今天免费高清在线观看国语| 天天操夜夜操很很操| 日本一二三区在线| 自拍偷拍视频在线| 三年中国中文在线观看免费播放|