国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

如何編寫一個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默認保存的文件格式,可以保留所有有圖層、色版、通道、蒙版、路徑、未柵格化文字以及圖層樣式等。

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        丁香激情综合五月| 丰满少妇在线播放bd日韩电影| 欧美精品九九99久久| 中文字幕不卡在线观看| 成人免费精品视频| 亚洲少妇屁股交4| 久久国产精品99久久人人澡| 日韩免费看的电影| 国产一区二区0| 日韩一区在线看| 国产在线国偷精品免费看| 一本到高清视频免费精品| 一区二区三区在线观看国产| 欧美日韩免费在线视频| 中文字幕一区视频| 国产乱码一区二区三区| 亚洲日本va在线观看| 911精品国产一区二区在线| 自拍偷拍国产精品| 7777精品伊人久久久大香线蕉的| 久久99国产精品尤物| 5858s免费视频成人| 国产成人一区在线| 国产日韩高清在线| 欧美三级电影网| 国产福利91精品| 久久众筹精品私拍模特| 久久国产精品99久久久久久老狼| 国产精品理论在线观看| 国产成人一区在线| 亚洲图片自拍偷拍| 在线观看亚洲成人| 国产大片一区二区| 日韩精品一二三区| 日韩欧美国产1| 在线视频国内一区二区| 亚洲国产另类精品专区| 久久久久综合网| 国产福利一区在线| 日韩不卡一二三区| 亚洲午夜久久久| 中文字幕制服丝袜成人av| 精品国产乱码91久久久久久网站| 在线一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 久久国产综合精品| 青草国产精品久久久久久| 日韩欧美一级精品久久| 欧美在线999| 亚洲一区二区中文在线| 91小视频在线免费看| 亚洲亚洲人成综合网络| 中文字幕人成不卡一区| 久久天天做天天爱综合色| 日韩欧美国产麻豆| 国产乱码字幕精品高清av| 日本欧美一区二区三区| 日韩精品电影一区亚洲| 亚洲成av人综合在线观看| 亚洲国产综合在线| 午夜av一区二区| 国产亚洲综合性久久久影院| 波多野结衣在线一区| 国产成人免费在线观看| 国产电影一区二区三区| 成人99免费视频| 日韩电影一二三区| 中文一区二区在线观看| 国产日韩影视精品| 91 com成人网| av电影在线观看完整版一区二区| av网站一区二区三区| 欧美在线制服丝袜| 欧美日韩高清不卡| 日韩精品最新网址| 国产精品无遮挡| 亚洲精品中文字幕在线观看| 午夜一区二区三区在线观看| 久久精品夜夜夜夜久久| 欧美猛男gaygay网站| 国产成人h网站| 99久久久免费精品国产一区二区 | 日韩精品一区二区三区四区视频| 欧美一级日韩一级| 国产精品理伦片| 精品国精品国产| 在线观看三级视频欧美| 国产成人夜色高潮福利影视| 成人app网站| 5858s免费视频成人| 亚洲国产精品二十页| 亚洲精品成人在线| 韩国女主播一区| 一本到不卡免费一区二区| 国产成人h网站| 欧美伊人久久大香线蕉综合69 | 欧美电影影音先锋| 欧美激情中文字幕一区二区| 一区二区三区精品久久久| 国产欧美日韩不卡| 亚洲一区二区在线观看视频| 国产精品你懂的在线| 亚洲国产精品视频| 国产白丝精品91爽爽久久| 欧美系列在线观看| 中文字幕国产一区| 免费精品视频在线| 欧美亚洲国产一区二区三区 | 麻豆精品在线观看| 三级欧美在线一区| 99精品久久只有精品| 欧美精品一区二区在线观看| 亚洲综合丁香婷婷六月香| 国产精品一区不卡| 欧美成人精品3d动漫h| 亚洲午夜私人影院| 91看片淫黄大片一级在线观看| 欧美www视频| 国产婷婷色一区二区三区四区| 亚洲另类色综合网站| 国产成a人亚洲精品| 精品国产制服丝袜高跟| 热久久免费视频| 国产精品2024| 99久久精品国产观看| 久久一区二区三区国产精品| 视频一区欧美精品| 欧美巨大另类极品videosbest| 欧美日韩在线精品一区二区三区激情| 日本一二三四高清不卡| 久久99精品视频| 成人免费视频app| 久久先锋影音av鲁色资源| 国产精品天美传媒| 亚洲综合无码一区二区| 成人午夜激情影院| 欧洲精品一区二区| 日韩一区二区三区av| 久久久久青草大香线综合精品| 欧美国产97人人爽人人喊| 亚洲免费在线播放| 蜜桃久久久久久| 日韩视频中午一区| 国产在线视频一区二区三区| 91在线精品一区二区三区| 欧美视频日韩视频在线观看| 久久综合国产精品| 亚洲一区二区三区视频在线| 欧美午夜电影网| 午夜精品福利视频网站| 日韩免费看网站| 懂色av一区二区三区蜜臀| 亚洲三级小视频| 国产伦精品一区二区三区视频青涩 | 91论坛在线播放| 欧美成人高清电影在线| 九九九久久久精品| 欧美韩国日本综合| 青草国产精品久久久久久| 日韩欧美卡一卡二| 成人看片黄a免费看在线| 亚洲精品菠萝久久久久久久| 在线播放国产精品二区一二区四区| 青青草97国产精品免费观看 | a4yy欧美一区二区三区| 亚洲在线观看免费| 成人黄色在线视频| 欧美成人国产一区二区| 亚洲一区二区欧美日韩 | 欧美亚洲国产一区二区三区va| 日本中文字幕不卡| 欧美国产日韩一二三区| 在线一区二区三区四区五区| 精品一区二区精品| 欧美成人一区二区三区 | 韩国v欧美v日本v亚洲v| 国产精品色眯眯| 91精品国产91久久久久久最新毛片| 亚洲激情第一区| 日韩欧美激情四射| 色狠狠一区二区三区香蕉| 国产一区在线不卡| 日韩精品一区第一页| 中文字幕视频一区| 久久久一区二区| 欧美日韩成人激情| 蜜臀av在线播放一区二区三区 | 日韩精品一区第一页| 亚洲欧美一区二区视频| 成人精品免费看| 奇米一区二区三区av| 日韩视频一区二区在线观看| 色婷婷综合激情| 成人国产精品免费观看动漫| 久久99精品久久久久久国产越南| 亚洲电影视频在线| 夜夜嗨av一区二区三区中文字幕| 欧美日韩一区在线| 99re在线视频这里只有精品| 亚洲一区在线免费观看|