@imgly/codesign-mcp 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -1
- package/assets/docs/guide/SKILL.md +45 -53
- package/assets/docs/guide/animation/create/base.md +234 -243
- package/assets/docs/guide/animation/create/text.md +250 -231
- package/assets/docs/guide/animation/create.md +197 -231
- package/assets/docs/guide/animation/edit.md +196 -271
- package/assets/docs/guide/animation/types.md +182 -185
- package/assets/docs/guide/animation.md +9 -6
- package/assets/docs/guide/api/AssetAPI.md +7 -53
- package/assets/docs/guide/api/BlockAPI.md +725 -648
- package/assets/docs/guide/api/CreativeEngine.md +7 -16
- package/assets/docs/guide/api/EditorAPI.md +32 -93
- package/assets/docs/guide/api/EventAPI.md +1 -2
- package/assets/docs/guide/api/SceneAPI.md +47 -98
- package/assets/docs/guide/api/VariableAPI.md +1 -4
- package/assets/docs/guide/api/node/classes/assetapi.md +1090 -0
- package/assets/docs/guide/api/node/classes/blockapi.md +12965 -0
- package/assets/docs/guide/api/node/classes/creativeengine.md +319 -0
- package/assets/docs/guide/api/node/classes/editorapi.md +3417 -0
- package/assets/docs/guide/api/node/classes/engineactions.md +319 -0
- package/assets/docs/guide/api/node/classes/eventapi.md +56 -0
- package/assets/docs/guide/api/node/classes/sceneapi.md +1370 -0
- package/assets/docs/guide/api/node/classes/variableapi.md +143 -0
- package/assets/docs/guide/api/node/enumerations/compressionformat.md +23 -0
- package/assets/docs/guide/api/node/enumerations/compressionlevel.md +24 -0
- package/assets/docs/guide/api/node/functions/iscmykcolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isrgbacolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isspotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/addvideooptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/applyassetoptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/asset.md +30 -0
- package/assets/docs/guide/api/node/interfaces/assetbooleanproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcmykcolor.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetcolorproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcontentaspectratio.md +23 -0
- package/assets/docs/guide/api/node/interfaces/assetdefinition.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetenumproperty.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedaspectratio.md +24 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedsize.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetfreeaspectratio.md +22 -0
- package/assets/docs/guide/api/node/interfaces/assetnumberproperty.md +28 -0
- package/assets/docs/guide/api/node/interfaces/assetpayload.md +27 -0
- package/assets/docs/guide/api/node/interfaces/assetquerydata.md +32 -0
- package/assets/docs/guide/api/node/interfaces/assetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/assetrgbcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsource.md +111 -0
- package/assets/docs/guide/api/node/interfaces/assetspotcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetstringproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepreset.md +39 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepresetanimation.md +23 -0
- package/assets/docs/guide/api/node/interfaces/audiotrackinfo.md +32 -0
- package/assets/docs/guide/api/node/interfaces/blockevent.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateerror.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstatepending.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateready.md +25 -0
- package/assets/docs/guide/api/node/interfaces/buffer.md +26 -0
- package/assets/docs/guide/api/node/interfaces/characterinkbox.md +29 -0
- package/assets/docs/guide/api/node/interfaces/cmykcolor.md +34 -0
- package/assets/docs/guide/api/node/interfaces/completeassetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/configuration.md +38 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolorsoptions.md +23 -0
- package/assets/docs/guide/api/node/interfaces/engineactioninfo.md +24 -0
- package/assets/docs/guide/api/node/interfaces/engineactionsregistry.md +18 -0
- package/assets/docs/guide/api/node/interfaces/engineplugin.md +30 -0
- package/assets/docs/guide/api/node/interfaces/font.md +27 -0
- package/assets/docs/guide/api/node/interfaces/fontmetrics.md +32 -0
- package/assets/docs/guide/api/node/interfaces/gradientcolorstop.md +28 -0
- package/assets/docs/guide/api/node/interfaces/logger.md +39 -0
- package/assets/docs/guide/api/node/interfaces/pageduration.md +23 -0
- package/assets/docs/guide/api/node/interfaces/range.md +23 -0
- package/assets/docs/guide/api/node/interfaces/rgbacolor.md +32 -0
- package/assets/docs/guide/api/node/interfaces/rgbcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/settings.md +126 -0
- package/assets/docs/guide/api/node/interfaces/size2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/source.md +24 -0
- package/assets/docs/guide/api/node/interfaces/spotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/textdecorationconfig.md +31 -0
- package/assets/docs/guide/api/node/interfaces/textfontsizeoptions.md +24 -0
- package/assets/docs/guide/api/node/interfaces/textruninfo.md +33 -0
- package/assets/docs/guide/api/node/interfaces/transientresource.md +26 -0
- package/assets/docs/guide/api/node/interfaces/typeface.md +23 -0
- package/assets/docs/guide/api/node/interfaces/vec2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/vec3.md +22 -0
- package/assets/docs/guide/api/node/type-aliases/addimageoptions.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/animationbaselinedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationblockswipetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationeasing.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationentry.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationgrowdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationjumploopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationkenburnsdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationmergetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationspindirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationspinloopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypewritertextwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationwipedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/applicationmimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/assetcolor.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/assetfilter.md +47 -0
- package/assets/docs/guide/api/node/type-aliases/assetgroups.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetmetadata.md +42 -0
- package/assets/docs/guide/api/node/type-aliases/assetproperty.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetanimationproperties.md +34 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetproperties.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetpropertyvalue.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetscalableproperty.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/assettransformpreset.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/asyncuriresolver.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/audioexportoptions.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/audiofromvideooptions.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/audiomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/blendmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/blockenumtype.md +63 -0
- package/assets/docs/guide/api/node/type-aliases/blockstate.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/blurtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/booleanoperation.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +79 -0
- package/assets/docs/guide/api/node/type-aliases/cameraclampingovershootmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionhorizontalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/cmyk.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/color.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/colorpickercolormode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/colorpropertyname.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/colorspace.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/contentfillmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmomovehandlevisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoresizehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmorotatehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoscalehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/createsceneoptions.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/cutoutoperation.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/cutouttype.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/defaultassetsourceid.md +37 -0
- package/assets/docs/guide/api/node/type-aliases/demoassetsourceid.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/designblockid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/designunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doubleclickselectionmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doublepropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/dropshadowoptions.md +32 -0
- package/assets/docs/guide/api/node/type-aliases/editmode.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/effecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/engineactionid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/enginecustomactionfunction.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/engineplugincontext.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/enumpropertyname.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/enumvalues.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/exportoptions.md +57 -0
- package/assets/docs/guide/api/node/type-aliases/fillpixelstreamorientation.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/filltype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/filltypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/filltypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/floatpropertyname.md +184 -0
- package/assets/docs/guide/api/node/type-aliases/fontsizeunit.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/fontstyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/fontweight.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/gradientstoprgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/heightmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/hexcolorstring.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyupdate.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontaltextalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/imagemimetype.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/intpropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/liststyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/locale.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/loglevel.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/mimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/objecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/optionalprefix.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/pageguidessource.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/palettecolor.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/positionmode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/positionxmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/positionymode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/propertytype.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/rgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/rolestring.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/scenefontsizeunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenelayout.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenemode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scope.md +50 -0
- package/assets/docs/guide/api/node/type-aliases/settingboolpropertyname.md +62 -0
- package/assets/docs/guide/api/node/type-aliases/settingcolorpropertyname.md +38 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumpropertyname.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumtype.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumvalues.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingfloatpropertyname.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/settingintpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingkey.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingsbool.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolor.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolorrgba.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/settingsenum.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsfloat.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsint.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsstring.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingstringpropertyname.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/settingtype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingvaluetype.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/shapetype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/shapevectorpathfillrule.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/sizemode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/sortingorder.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/sourcesetpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/splitoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/stringpropertyname.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/strokecap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokecornergeometry.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashstartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeposition.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/syncuriresolver.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/textanimationwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/textcase.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationline.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationstyle.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/textverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/timelinetrackvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchpinchaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchrotateaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/typefacedefinition.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/verticalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/verticalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/videoexportoptions.md +54 -0
- package/assets/docs/guide/api/node/type-aliases/videomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/widthmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/xywh.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/zoomautofitaxis.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/zoomoptions.md +27 -0
- package/assets/docs/guide/api/node/variables/animation_types.md +21 -0
- package/assets/docs/guide/api/node/variables/animationbaselinedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationblockswipetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationeasingvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationgrowdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationjumploopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationkenburnsdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationmergetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspindirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspinloopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationtypewritertextwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationwipedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blendmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blur_types.md +21 -0
- package/assets/docs/guide/api/node/variables/cameraclampingovershootmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionhorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/colorpickercolormodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/contentfillmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmomovehandlevisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoresizehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmorotatehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoscalehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/cutouttypevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/design_block_types.md +21 -0
- package/assets/docs/guide/api/node/variables/doubleclickselectionmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/effect_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fill_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fillpixelstreamorientationvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/heightmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/horizontalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/loglevel.md +37 -0
- package/assets/docs/guide/api/node/variables/mimetype.md +41 -0
- package/assets/docs/guide/api/node/variables/pageguidessourcevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionxmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionymodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenedesignunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenefontsizeunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenelayoutvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenemodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/shape_types.md +21 -0
- package/assets/docs/guide/api/node/variables/shapevectorpathfillrulevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecornergeometryvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashstartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokeendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokepositionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textanimationwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/texthorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/timelinetrackvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchpinchactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchrotateactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/verticalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/widthmodevalues.md +18 -0
- package/assets/docs/guide/api/types.md +5 -9
- package/assets/docs/guide/api-reference/overview.md +7 -7
- package/assets/docs/guide/automation/auto-resize.md +263 -300
- package/assets/docs/guide/automation/data-merge.md +246 -275
- package/assets/docs/guide/automation/design-generation.md +102 -31
- package/assets/docs/guide/automation/multi-image-generation.md +758 -0
- package/assets/docs/guide/automation/overview.md +21 -4
- package/assets/docs/guide/automation.md +10 -5
- package/assets/docs/guide/capabilities.md +6 -4
- package/assets/docs/guide/colors/adjust.md +247 -249
- package/assets/docs/guide/colors/apply.md +127 -138
- package/assets/docs/guide/colors/basics.md +126 -150
- package/assets/docs/guide/colors/conversion.md +171 -177
- package/assets/docs/guide/colors/create-color-palette.md +244 -245
- package/assets/docs/guide/colors/extract-colors.md +144 -0
- package/assets/docs/guide/colors/for-print/cmyk.md +292 -352
- package/assets/docs/guide/colors/for-print/spot.md +521 -578
- package/assets/docs/guide/colors/for-print.md +9 -4
- package/assets/docs/guide/colors/for-screen/p3.md +12 -10
- package/assets/docs/guide/colors/for-screen/srgb.md +107 -133
- package/assets/docs/guide/colors/for-screen.md +9 -4
- package/assets/docs/guide/colors/overview.md +6 -4
- package/assets/docs/guide/colors/replace.md +381 -419
- package/assets/docs/guide/colors.md +9 -4
- package/assets/docs/guide/compatibility.md +7 -5
- package/assets/docs/guide/concepts/architecture.md +17 -15
- package/assets/docs/guide/concepts/assets.md +152 -140
- package/assets/docs/guide/concepts/blocks.md +227 -323
- package/assets/docs/guide/concepts/buffers.md +147 -276
- package/assets/docs/guide/concepts/design-units.md +95 -145
- package/assets/docs/guide/concepts/editing-workflow.md +69 -183
- package/assets/docs/guide/concepts/events.md +80 -122
- package/assets/docs/guide/concepts/headless-mode.md +237 -0
- package/assets/docs/guide/concepts/pages.md +137 -127
- package/assets/docs/guide/concepts/resources.md +156 -217
- package/assets/docs/guide/concepts/scenes.md +191 -210
- package/assets/docs/guide/concepts/templating.md +118 -74
- package/assets/docs/guide/concepts/terminology.md +49 -47
- package/assets/docs/guide/concepts/undo-and-history.md +229 -303
- package/assets/docs/guide/concepts.md +9 -7
- package/assets/docs/guide/configuration.md +252 -380
- package/assets/docs/guide/conversion/overview.md +33 -4
- package/assets/docs/guide/conversion/to-base64.md +127 -167
- package/assets/docs/guide/conversion/to-pdf.md +24 -474
- package/assets/docs/guide/conversion/to-png.md +168 -211
- package/assets/docs/guide/conversion.md +9 -4
- package/assets/docs/guide/create-audio/audio/add-music.md +301 -327
- package/assets/docs/guide/create-audio/audio/add-sound-effects.md +475 -359
- package/assets/docs/guide/create-audio/audio/loop.md +232 -272
- package/assets/docs/guide/create-composition/add-background.md +237 -239
- package/assets/docs/guide/create-composition/blend-modes.md +118 -209
- package/assets/docs/guide/create-composition/collage.md +538 -320
- package/assets/docs/guide/create-composition/group-and-ungroup.md +216 -261
- package/assets/docs/guide/create-composition/layer-management.md +219 -257
- package/assets/docs/guide/create-composition/layout.md +513 -315
- package/assets/docs/guide/create-composition/lock-design.md +90 -109
- package/assets/docs/guide/create-composition/multi-page.md +133 -113
- package/assets/docs/guide/create-composition/overview.md +16 -4
- package/assets/docs/guide/create-composition/programmatic.md +288 -344
- package/assets/docs/guide/create-composition.md +10 -5
- package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +443 -569
- package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +567 -470
- package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +179 -516
- package/assets/docs/guide/create-templates/add-dynamic-content.md +226 -224
- package/assets/docs/guide/create-templates/add-to-template-library.md +183 -193
- package/assets/docs/guide/create-templates/edit-or-remove.md +297 -303
- package/assets/docs/guide/create-templates/from-scratch.md +207 -268
- package/assets/docs/guide/create-templates/import/from-scene-file.md +158 -236
- package/assets/docs/guide/create-templates/import.md +145 -161
- package/assets/docs/guide/create-templates/lock.md +42 -295
- package/assets/docs/guide/create-templates/overview.md +33 -4
- package/assets/docs/guide/create-templates.md +9 -5
- package/assets/docs/guide/create-video/audio/adjust-speed.md +157 -207
- package/assets/docs/guide/create-video/audio/adjust-volume.md +116 -227
- package/assets/docs/guide/create-video/control.md +352 -193
- package/assets/docs/guide/create-video/limitations.md +175 -280
- package/assets/docs/guide/create-video.md +11 -10
- package/assets/docs/guide/edit-image/add-watermark.md +283 -330
- package/assets/docs/guide/edit-image/overview.md +29 -4
- package/assets/docs/guide/edit-image/remove-bg.md +283 -337
- package/assets/docs/guide/edit-image/replace-colors.md +424 -502
- package/assets/docs/guide/edit-image/transform/crop.md +463 -402
- package/assets/docs/guide/edit-image/transform/flip.md +353 -0
- package/assets/docs/guide/edit-image/transform/move.md +143 -100
- package/assets/docs/guide/edit-image/transform/resize.md +118 -88
- package/assets/docs/guide/edit-image/transform/rotate.md +132 -165
- package/assets/docs/guide/edit-image/transform/scale.md +230 -228
- package/assets/docs/guide/edit-image/transform.md +10 -5
- package/assets/docs/guide/edit-image.md +11 -7
- package/assets/docs/guide/edit-video/add-captions.md +344 -421
- package/assets/docs/guide/edit-video/add-watermark.md +312 -258
- package/assets/docs/guide/edit-video/join-and-arrange.md +237 -371
- package/assets/docs/guide/edit-video/redaction.md +419 -385
- package/assets/docs/guide/edit-video/split.md +243 -493
- package/assets/docs/guide/edit-video/transform/crop.md +21 -352
- package/assets/docs/guide/edit-video/transform/flip.md +102 -76
- package/assets/docs/guide/edit-video/transform/move.md +258 -310
- package/assets/docs/guide/edit-video/transform/resize.md +264 -428
- package/assets/docs/guide/edit-video/transform/rotate.md +265 -228
- package/assets/docs/guide/edit-video/transform/scale.md +320 -417
- package/assets/docs/guide/edit-video/transform.md +10 -6
- package/assets/docs/guide/edit-video/trim.md +448 -494
- package/assets/docs/guide/engine-interface.md +51 -62
- package/assets/docs/guide/export-save-publish/create-thumbnail.md +148 -184
- package/assets/docs/guide/export-save-publish/export/compress.md +161 -559
- package/assets/docs/guide/export-save-publish/export/overview.md +224 -373
- package/assets/docs/guide/export-save-publish/export/partial-export.md +386 -577
- package/assets/docs/guide/export-save-publish/export/size-limits.md +215 -310
- package/assets/docs/guide/export-save-publish/export/to-jpeg.md +132 -213
- package/assets/docs/guide/export-save-publish/export/to-pdf.md +139 -267
- package/assets/docs/guide/export-save-publish/export/to-png.md +121 -165
- package/assets/docs/guide/export-save-publish/export/to-raw-data.md +187 -234
- package/assets/docs/guide/export-save-publish/export/to-webp.md +160 -190
- package/assets/docs/guide/export-save-publish/export/with-color-mask.md +359 -203
- package/assets/docs/guide/export-save-publish/export.md +14 -11
- package/assets/docs/guide/export-save-publish/for-printing.md +141 -237
- package/assets/docs/guide/export-save-publish/for-social-media.md +124 -261
- package/assets/docs/guide/export-save-publish/pre-export-validation.md +436 -522
- package/assets/docs/guide/export-save-publish/save.md +167 -226
- package/assets/docs/guide/export-save-publish/store-custom-metadata.md +97 -162
- package/assets/docs/guide/file-format-support.md +9 -9
- package/assets/docs/guide/fills/color.md +370 -347
- package/assets/docs/guide/fills/image.md +167 -196
- package/assets/docs/guide/fills/overview.md +6 -4
- package/assets/docs/guide/fills/video.md +286 -438
- package/assets/docs/guide/fills.md +12 -8
- package/assets/docs/guide/filters-and-effects/apply.md +598 -664
- package/assets/docs/guide/filters-and-effects/blur.md +261 -159
- package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +194 -293
- package/assets/docs/guide/filters-and-effects/create-custom-filters.md +548 -466
- package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +176 -244
- package/assets/docs/guide/filters-and-effects/distortion.md +317 -384
- package/assets/docs/guide/filters-and-effects/duotone.md +221 -217
- package/assets/docs/guide/filters-and-effects/gradients.md +670 -813
- package/assets/docs/guide/filters-and-effects/overview.md +7 -7
- package/assets/docs/guide/filters-and-effects/support.md +97 -132
- package/assets/docs/guide/filters-and-effects.md +11 -6
- package/assets/docs/guide/get-started/agent-skills.md +20 -18
- package/assets/docs/guide/get-started/build-with-ai.md +7 -4
- package/assets/docs/guide/get-started/bun.md +219 -0
- package/assets/docs/guide/get-started/deno.md +161 -0
- package/assets/docs/guide/get-started/mcp-server.md +6 -4
- package/assets/docs/guide/get-started/overview.md +11 -6
- package/assets/docs/guide/get-started/vanilla-aws-lambda.md +506 -0
- package/assets/docs/guide/get-started/vanilla-clone-github-project.md +124 -0
- package/assets/docs/guide/get-started/vanilla.md +235 -0
- package/assets/docs/guide/guides/export-save-publish/export/audio.md +80 -66
- package/assets/docs/guide/guides.md +10 -9
- package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +259 -288
- package/assets/docs/guide/import-media/concepts.md +20 -38
- package/assets/docs/guide/import-media/content-json-schema.md +145 -125
- package/assets/docs/guide/import-media/default-assets.md +113 -161
- package/assets/docs/guide/import-media/edit-or-remove-assets.md +391 -395
- package/assets/docs/guide/import-media/file-format-support.md +78 -61
- package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +273 -244
- package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +152 -222
- package/assets/docs/guide/import-media/from-remote-source.md +9 -11
- package/assets/docs/guide/import-media/overview.md +5 -5
- package/assets/docs/guide/import-media/retrieve-mimetype.md +216 -108
- package/assets/docs/guide/import-media/size-limits.md +6 -4
- package/assets/docs/guide/import-media/source-sets.md +190 -251
- package/assets/docs/guide/import-media.md +10 -8
- package/assets/docs/guide/insert-media/audio.md +202 -195
- package/assets/docs/guide/insert-media/images.md +190 -188
- package/assets/docs/guide/insert-media/position-and-align.md +284 -551
- package/assets/docs/guide/insert-media/shapes-or-stickers.md +402 -418
- package/assets/docs/guide/insert-media/videos.md +236 -203
- package/assets/docs/guide/insert-media.md +10 -5
- package/assets/docs/guide/key-capabilities.md +36 -4
- package/assets/docs/guide/key-concepts.md +6 -4
- package/assets/docs/guide/licensing.md +6 -4
- package/assets/docs/guide/llms-txt.md +11 -7
- package/assets/docs/guide/open-the-editor/blank-canvas.md +102 -63
- package/assets/docs/guide/open-the-editor/from-image.md +157 -127
- package/assets/docs/guide/open-the-editor/from-template.md +131 -92
- package/assets/docs/guide/open-the-editor/from-video.md +204 -212
- package/assets/docs/guide/open-the-editor/import-design/from-archive.md +310 -360
- package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +716 -513
- package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +667 -695
- package/assets/docs/guide/open-the-editor/import-design.md +228 -266
- package/assets/docs/guide/open-the-editor/load-scene.md +72 -68
- package/assets/docs/guide/open-the-editor/overview.md +6 -4
- package/assets/docs/guide/open-the-editor/uri-resolver.md +160 -251
- package/assets/docs/guide/open-the-editor.md +11 -9
- package/assets/docs/guide/outlines/overview.md +12 -4
- package/assets/docs/guide/outlines/shadows-and-glows.md +105 -410
- package/assets/docs/guide/outlines/strokes.md +218 -166
- package/assets/docs/guide/outlines.md +9 -4
- package/assets/docs/guide/overview.md +14 -6
- package/assets/docs/guide/performance.md +220 -113
- package/assets/docs/guide/plugins/print-ready-pdf.md +273 -368
- package/assets/docs/guide/plugins.md +10 -16
- package/assets/docs/guide/rules/asset-handling.md +7 -18
- package/assets/docs/guide/rules/common-pitfalls.md +25 -42
- package/assets/docs/guide/rules/content-fill-mode.md +4 -4
- package/assets/docs/guide/rules/enforce-brand-guidelines.md +398 -567
- package/assets/docs/guide/rules/lock-content.md +188 -231
- package/assets/docs/guide/rules/moderate-content.md +580 -571
- package/assets/docs/guide/rules/overview.md +345 -380
- package/assets/docs/guide/rules/silent-init-errors.md +4 -1
- package/assets/docs/guide/rules/verify-properties-before-use.md +2 -11
- package/assets/docs/guide/rules.md +10 -5
- package/assets/docs/guide/security.md +7 -5
- package/assets/docs/guide/serve-assets.md +57 -284
- package/assets/docs/guide/settings.md +96 -74
- package/assets/docs/guide/shapes.md +10 -5
- package/assets/docs/guide/stickers-and-shapes/combine.md +397 -583
- package/assets/docs/guide/stickers-and-shapes/create-cutout.md +181 -268
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +418 -431
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +147 -226
- package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +138 -123
- package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +151 -149
- package/assets/docs/guide/stickers.md +9 -4
- package/assets/docs/guide/text/add.md +470 -482
- package/assets/docs/guide/text/adjust-spacing.md +179 -214
- package/assets/docs/guide/text/auto-size.md +210 -271
- package/assets/docs/guide/text/edit.md +294 -309
- package/assets/docs/guide/text/effects.md +154 -190
- package/assets/docs/guide/text/emojis.md +199 -232
- package/assets/docs/guide/text/language-support.md +369 -382
- package/assets/docs/guide/text/overview.md +41 -4
- package/assets/docs/guide/text/styling.md +239 -273
- package/assets/docs/guide/text/text-designs.md +405 -544
- package/assets/docs/guide/text.md +10 -9
- package/assets/docs/guide/to-v1-19.md +12 -10
- package/assets/docs/guide/upgrade.md +8 -9
- package/assets/docs/guide/use-templates/apply-template.md +174 -163
- package/assets/docs/guide/use-templates/generate.md +171 -152
- package/assets/docs/guide/use-templates/overview.md +32 -4
- package/assets/docs/guide/use-templates/programmatic.md +266 -301
- package/assets/docs/guide/use-templates/replace-content.md +181 -171
- package/assets/docs/guide/what-is-cesdk.md +71 -282
- package/assets/docs/handbook/SKILL.md +24 -0
- package/dist/assets/inline.generated.d.ts.map +1 -1
- package/dist/assets/inline.generated.js +544 -406
- package/dist/assets/inline.generated.js.map +1 -1
- package/dist/assets/load-browser.d.ts +1 -1
- package/dist/assets/load-browser.js +1 -1
- package/dist/assets/load-browser.js.map +1 -1
- package/dist/assets/load-node.d.ts +1 -1
- package/dist/assets/load-node.js +1 -1
- package/dist/assets/load-node.js.map +1 -1
- package/dist/cli/http.d.ts.map +1 -1
- package/dist/cli/http.js +4 -28
- package/dist/cli/http.js.map +1 -1
- package/dist/cli/redirect-console.d.ts +1 -1
- package/dist/cli/redirect-console.d.ts.map +1 -1
- package/dist/cli/redirect-console.js +12 -3
- package/dist/cli/redirect-console.js.map +1 -1
- package/dist/cli/resolve-license.d.ts.map +1 -1
- package/dist/cli/resolve-license.js +8 -6
- package/dist/cli/resolve-license.js.map +1 -1
- package/dist/cli/stdio.d.ts +9 -0
- package/dist/cli/stdio.d.ts.map +1 -1
- package/dist/cli/stdio.js +48 -4
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics/bundle.d.ts +10 -0
- package/dist/diagnostics/bundle.d.ts.map +1 -0
- package/dist/diagnostics/bundle.js +148 -0
- package/dist/diagnostics/bundle.js.map +1 -0
- package/dist/diagnostics/compose.d.ts +3 -0
- package/dist/diagnostics/compose.d.ts.map +1 -0
- package/dist/diagnostics/compose.js +15 -0
- package/dist/diagnostics/compose.js.map +1 -0
- package/dist/diagnostics/events.d.ts +34 -0
- package/dist/diagnostics/events.d.ts.map +1 -0
- package/dist/diagnostics/events.js +3 -0
- package/dist/diagnostics/events.js.map +1 -0
- package/dist/diagnostics/file-sink.d.ts +38 -0
- package/dist/diagnostics/file-sink.d.ts.map +1 -0
- package/dist/diagnostics/file-sink.js +157 -0
- package/dist/diagnostics/file-sink.js.map +1 -0
- package/dist/diagnostics/redact.d.ts +7 -0
- package/dist/diagnostics/redact.d.ts.map +1 -0
- package/dist/diagnostics/redact.js +43 -0
- package/dist/diagnostics/redact.js.map +1 -0
- package/dist/diagnostics/tool-call-adapter.d.ts +4 -0
- package/dist/diagnostics/tool-call-adapter.d.ts.map +1 -0
- package/dist/diagnostics/tool-call-adapter.js +21 -0
- package/dist/diagnostics/tool-call-adapter.js.map +1 -0
- package/dist/engine/cesdk-adapter.d.ts +5 -1
- package/dist/engine/cesdk-adapter.d.ts.map +1 -1
- package/dist/engine/cesdk-adapter.js +9 -2
- package/dist/engine/cesdk-adapter.js.map +1 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +4 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/scene-resource-schemes.d.ts +2 -0
- package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
- package/dist/engine/scene-resource-schemes.js +20 -0
- package/dist/engine/scene-resource-schemes.js.map +1 -0
- package/dist/http/server.d.ts +0 -6
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +1 -2
- package/dist/http/server.js.map +1 -1
- package/dist/server.d.ts +0 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -60
- package/dist/server.js.map +1 -1
- package/dist/test/scripts/changelog-add.d.ts +8 -0
- package/dist/test/scripts/changelog-add.d.ts.map +1 -0
- package/dist/test/scripts/changelog-add.js +50 -0
- package/dist/test/scripts/changelog-add.js.map +1 -0
- package/dist/test/scripts/changelog-collate.d.ts +38 -0
- package/dist/test/scripts/changelog-collate.d.ts.map +1 -0
- package/dist/test/scripts/changelog-collate.js +171 -0
- package/dist/test/scripts/changelog-collate.js.map +1 -0
- package/dist/test/test/changelog.test.d.ts +2 -0
- package/dist/test/test/changelog.test.d.ts.map +1 -0
- package/dist/test/test/changelog.test.js +293 -0
- package/dist/test/test/changelog.test.js.map +1 -0
- package/dist/test/test/cli/dispatcher.test.js +10 -3
- package/dist/test/test/cli/dispatcher.test.js.map +1 -1
- package/dist/test/test/cli/redirect-console.test.js +31 -0
- package/dist/test/test/cli/redirect-console.test.js.map +1 -1
- package/dist/test/test/cli/resolve-license.test.js +10 -1
- package/dist/test/test/cli/resolve-license.test.js.map +1 -1
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts +2 -0
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts.map +1 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js +31 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js.map +1 -0
- package/dist/test/test/config.test.js +17 -13
- package/dist/test/test/config.test.js.map +1 -1
- package/dist/test/test/diagnostics/bundle.test.d.ts +2 -0
- package/dist/test/test/diagnostics/bundle.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/bundle.test.js +53 -0
- package/dist/test/test/diagnostics/bundle.test.js.map +1 -0
- package/dist/test/test/diagnostics/compose.test.d.ts +2 -0
- package/dist/test/test/diagnostics/compose.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/compose.test.js +31 -0
- package/dist/test/test/diagnostics/compose.test.js.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts +2 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.js +113 -0
- package/dist/test/test/diagnostics/file-sink.test.js.map +1 -0
- package/dist/test/test/diagnostics/redact.test.d.ts +2 -0
- package/dist/test/test/diagnostics/redact.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/redact.test.js +59 -0
- package/dist/test/test/diagnostics/redact.test.js.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts +2 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js +34 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts +2 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.js +32 -0
- package/dist/test/test/engine/cesdk-adapter.test.js.map +1 -0
- package/dist/test/test/handbook-contract.test.js +6 -2
- package/dist/test/test/handbook-contract.test.js.map +1 -1
- package/dist/test/test/http/server.test.js +0 -36
- package/dist/test/test/http/server.test.js.map +1 -1
- package/dist/test/test/http/workspace-auth.test.js +0 -1
- package/dist/test/test/http/workspace-auth.test.js.map +1 -1
- package/dist/test/test/server.test.js +0 -40
- package/dist/test/test/server.test.js.map +1 -1
- package/dist/test/test/tools/edit-harness.d.ts +14 -0
- package/dist/test/test/tools/edit-harness.d.ts.map +1 -0
- package/dist/test/test/tools/edit-harness.js +30 -0
- package/dist/test/test/tools/edit-harness.js.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.js +46 -0
- package/dist/test/test/tools/edit.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/export-harness.d.ts +13 -0
- package/dist/test/test/tools/export-harness.d.ts.map +1 -0
- package/dist/test/test/tools/export-harness.js +27 -0
- package/dist/test/test/tools/export-harness.js.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.js +65 -0
- package/dist/test/test/tools/export.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/import.test.d.ts +2 -0
- package/dist/test/test/tools/import.test.d.ts.map +1 -0
- package/dist/test/test/tools/import.test.js +122 -0
- package/dist/test/test/tools/import.test.js.map +1 -0
- package/dist/test/test/tools/index.test.js +78 -16
- package/dist/test/test/tools/index.test.js.map +1 -1
- package/dist/test/test/tools/load.integration.test.d.ts +2 -0
- package/dist/test/test/tools/load.integration.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.integration.test.js +165 -0
- package/dist/test/test/tools/load.integration.test.js.map +1 -0
- package/dist/test/test/tools/load.test.d.ts +2 -0
- package/dist/test/test/tools/load.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.test.js +387 -0
- package/dist/test/test/tools/load.test.js.map +1 -0
- package/dist/test/test/tools/preview-harness.d.ts +9 -0
- package/dist/test/test/tools/preview-harness.d.ts.map +1 -0
- package/dist/test/test/tools/preview-harness.js +23 -0
- package/dist/test/test/tools/preview-harness.js.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.js +36 -0
- package/dist/test/test/tools/preview.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.d.ts +13 -0
- package/dist/test/test/tools/schema-best-practices.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.js +169 -0
- package/dist/test/test/tools/schema-best-practices.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts +3 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.js +194 -0
- package/dist/test/test/tools/schema-best-practices.test.js.map +1 -0
- package/dist/test/test/tools/spans.test.d.ts +2 -0
- package/dist/test/test/tools/spans.test.d.ts.map +1 -0
- package/dist/test/test/tools/spans.test.js +84 -0
- package/dist/test/test/tools/spans.test.js.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts +2 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js +19 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js.map +1 -0
- package/dist/test/test/viewer/config-route.test.d.ts +2 -0
- package/dist/test/test/viewer/config-route.test.d.ts.map +1 -0
- package/dist/test/test/viewer/config-route.test.js +28 -0
- package/dist/test/test/viewer/config-route.test.js.map +1 -0
- package/dist/test/test/viewer/spa-version.test.d.ts +2 -0
- package/dist/test/test/viewer/spa-version.test.d.ts.map +1 -0
- package/dist/test/test/viewer/spa-version.test.js +14 -0
- package/dist/test/test/viewer/spa-version.test.js.map +1 -0
- package/dist/test/test/workspace/content-hash.test.d.ts +2 -0
- package/dist/test/test/workspace/content-hash.test.d.ts.map +1 -0
- package/dist/test/test/workspace/content-hash.test.js +17 -0
- package/dist/test/test/workspace/content-hash.test.js.map +1 -0
- package/dist/test/tsconfig.test.tsbuildinfo +1 -1
- package/dist/test/vitest.config.js +1 -1
- package/dist/test/vitest.config.js.map +1 -1
- package/dist/tools/asset-generate.d.ts.map +1 -1
- package/dist/tools/asset-generate.js +1 -8
- package/dist/tools/asset-generate.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +145 -96
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/export.d.ts +3 -0
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +146 -108
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/import.d.ts +12 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +44 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/load.d.ts +26 -0
- package/dist/tools/load.d.ts.map +1 -0
- package/dist/tools/load.js +400 -0
- package/dist/tools/load.js.map +1 -0
- package/dist/tools/preview.d.ts +3 -0
- package/dist/tools/preview.d.ts.map +1 -1
- package/dist/tools/preview.js +79 -44
- package/dist/tools/preview.js.map +1 -1
- package/dist/tools/result.d.ts +1 -1
- package/dist/tools/result.js +2 -2
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/spans.d.ts +45 -0
- package/dist/tools/spans.d.ts.map +1 -0
- package/dist/tools/spans.js +77 -0
- package/dist/tools/spans.js.map +1 -0
- package/dist/tools/telemetry-wrapper.d.ts +4 -0
- package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
- package/dist/tools/telemetry-wrapper.js +43 -0
- package/dist/tools/telemetry-wrapper.js.map +1 -0
- package/dist/viewer/cesdk-cdn.d.ts +16 -0
- package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
- package/dist/viewer/cesdk-cdn.js +30 -0
- package/dist/viewer/cesdk-cdn.js.map +1 -0
- package/dist/viewer/router.d.ts +6 -0
- package/dist/viewer/router.d.ts.map +1 -1
- package/dist/viewer/router.js +4 -1
- package/dist/viewer/router.js.map +1 -1
- package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
- package/dist/viewer/spa-assets.generated.js +2 -3
- package/dist/viewer/spa-assets.generated.js.map +1 -1
- package/dist/workspace/content-hash.d.ts +2 -0
- package/dist/workspace/content-hash.d.ts.map +1 -0
- package/dist/workspace/content-hash.js +15 -0
- package/dist/workspace/content-hash.js.map +1 -0
- package/package.json +18 -9
- package/assets/docs/guide/actions.md +0 -1038
- package/assets/docs/guide/animation/overview.md +0 -22
- package/assets/docs/guide/automation/batch-processing.md +0 -474
- package/assets/docs/guide/browser-support.md +0 -38
- package/assets/docs/guide/concepts/edit-modes.md +0 -431
- package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
- package/assets/docs/guide/create-audio/audio.md +0 -336
- package/assets/docs/guide/create-video/overview.md +0 -224
- package/assets/docs/guide/create-video/timeline-editor.md +0 -622
- package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
- package/assets/docs/guide/edit-image/vectorize.md +0 -204
- package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
- package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
- package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
- package/assets/docs/guide/grid-and-rulers.md +0 -222
- package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
- package/assets/docs/guide/import-media/asset-library.md +0 -23
- package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
- package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
- package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
- package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
- package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
- package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
- package/assets/docs/guide/import-media/from-local-source.md +0 -20
- package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
- package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
- package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
- package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
- package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
- package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
- package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
- package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
- package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
- package/assets/docs/guide/plugins/asset-sources.md +0 -553
- package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
- package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
- package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
- package/assets/docs/guide/starterkits/ai-editor.md +0 -749
- package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
- package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
- package/assets/docs/guide/starterkits/assets.md +0 -27
- package/assets/docs/guide/starterkits/auto-resize.md +0 -586
- package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
- package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
- package/assets/docs/guide/starterkits/content-moderation.md +0 -863
- package/assets/docs/guide/starterkits/creative-automation.md +0 -28
- package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
- package/assets/docs/guide/starterkits/customization.md +0 -29
- package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
- package/assets/docs/guide/starterkits/data-merge.md +0 -850
- package/assets/docs/guide/starterkits/design-editor.md +0 -698
- package/assets/docs/guide/starterkits/design-generation.md +0 -719
- package/assets/docs/guide/starterkits/design-validation.md +0 -808
- package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
- package/assets/docs/guide/starterkits/export-options.md +0 -724
- package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
- package/assets/docs/guide/starterkits/extensibility.md +0 -28
- package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
- package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
- package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
- package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
- package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
- package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
- package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
- package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
- package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
- package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
- package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
- package/assets/docs/guide/starterkits/photo-editor.md +0 -755
- package/assets/docs/guide/starterkits/photo-ui.md +0 -186
- package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
- package/assets/docs/guide/starterkits/placeholders.md +0 -678
- package/assets/docs/guide/starterkits/player.md +0 -405
- package/assets/docs/guide/starterkits/plugins.md +0 -25
- package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
- package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
- package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
- package/assets/docs/guide/starterkits/product-editor.md +0 -773
- package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
- package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
- package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
- package/assets/docs/guide/starterkits/start-with-image.md +0 -684
- package/assets/docs/guide/starterkits/start-with-video.md +0 -651
- package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
- package/assets/docs/guide/starterkits/templating.md +0 -23
- package/assets/docs/guide/starterkits/theming.md +0 -662
- package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
- package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
- package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
- package/assets/docs/guide/starterkits/version-history.md +0 -745
- package/assets/docs/guide/starterkits/video-animations.md +0 -853
- package/assets/docs/guide/starterkits/video-captions.md +0 -884
- package/assets/docs/guide/starterkits/video-editing.md +0 -25
- package/assets/docs/guide/starterkits/video-editor.md +0 -696
- package/assets/docs/guide/starterkits/video-export-options.md +0 -676
- package/assets/docs/guide/starterkits/viewer.md +0 -400
- package/assets/docs/guide/starterkits.md +0 -41
- package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
- package/assets/docs/guide/text/custom-fonts.md +0 -401
- package/assets/docs/guide/text/decorations.md +0 -330
- package/assets/docs/guide/text/enumerations.md +0 -258
- package/assets/docs/guide/to-v1-10.md +0 -131
- package/assets/docs/guide/to-v1-13.md +0 -165
- package/assets/docs/guide/to-v1-32.md +0 -110
- package/assets/docs/guide/to-v1-69.md +0 -468
- package/assets/docs/guide/to-v1-72.md +0 -193
- package/assets/docs/guide/use-templates/library.md +0 -450
- package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
- package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
- package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
- package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
- package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
- package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
- package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
- package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
- package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
- package/assets/docs/guide/user-interface/ai-integration.md +0 -30
- package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
- package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
- package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
- package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
- package/assets/docs/guide/user-interface/appearance.md +0 -23
- package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
- package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
- package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
- package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
- package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
- package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
- package/assets/docs/guide/user-interface/customization/dock.md +0 -399
- package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
- package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
- package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
- package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
- package/assets/docs/guide/user-interface/customization/panel.md +0 -605
- package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
- package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
- package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
- package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
- package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
- package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
- package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
- package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
- package/assets/docs/guide/user-interface/customization/reference.md +0 -12
- package/assets/docs/guide/user-interface/customization.md +0 -39
- package/assets/docs/guide/user-interface/localization.md +0 -633
- package/assets/docs/guide/user-interface/overview.md +0 -167
- package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
- package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
- package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
- package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
- package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
- package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
- package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
- package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
- package/assets/docs/guide/user-interface.md +0 -25
- package/assets/prompts/evals-assetGenerate.md +0 -12
- package/assets/prompts/evals-brutalistCore.md +0 -34
- package/assets/prompts/evals-danskCatalogue.md +0 -31
- package/assets/prompts/evals-exportRoundTrip.md +0 -12
- package/assets/prompts/evals-inspectPriorCode.md +0 -16
- package/assets/prompts/evals-listProjectFiles.md +0 -6
- package/assets/prompts/evals-readAndExplainScript.md +0 -6
- package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
- package/assets/prompts/evals-rewindRecovery.md +0 -10
- package/assets/prompts/evals-searchAcrossFiles.md +0 -6
- package/assets/prompts/evals-weddingCard.md +0 -20
- package/assets/prompts/explain.md +0 -6
- package/assets/prompts/review.md +0 -6
- package/dist/frontmatter.d.ts +0 -15
- package/dist/frontmatter.d.ts.map +0 -1
- package/dist/frontmatter.js +0 -46
- package/dist/frontmatter.js.map +0 -1
- package/dist/test/test/frontmatter.test.d.ts +0 -2
- package/dist/test/test/frontmatter.test.d.ts.map +0 -1
- package/dist/test/test/frontmatter.test.js +0 -55
- package/dist/test/test/frontmatter.test.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
> This is one page of the CE.SDK
|
|
1
|
+
> This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
2
|
|
|
3
3
|
**Navigation:** [Guides](./guides.md) > [Create and Edit Images](./edit-image.md) > [Replace Colors](./edit-image/replace-colors.md)
|
|
4
4
|
|
|
@@ -6,327 +6,252 @@
|
|
|
6
6
|
|
|
7
7
|
Transform images by swapping specific colors using the Recolor effect or remove backgrounds with the Green Screen effect in CE.SDK.
|
|
8
8
|
|
|
9
|
-

|
|
10
|
-
|
|
11
9
|
> **Reading time:** 8 minutes
|
|
12
10
|
>
|
|
13
11
|
> **Resources:**
|
|
14
12
|
>
|
|
15
13
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
-
>
|
|
17
|
-
> - [
|
|
18
|
-
>
|
|
14
|
+
>
|
|
15
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-edit-image-replace-colors-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-replace-colors-server-js)
|
|
19
18
|
|
|
20
19
|
CE.SDK offers two color replacement effects. The **Recolor** effect swaps one color for another while preserving image details. The **Green Screen** effect removes background colors with transparency. Both effects provide precise control over color matching, edge smoothness, and intensity.
|
|
21
20
|
|
|
22
|
-
```typescript file=@cesdk_web_examples/guides-edit-image-replace-colors-
|
|
23
|
-
import
|
|
24
|
-
|
|
25
|
-
import {
|
|
26
|
-
BlurAssetSource,
|
|
27
|
-
ColorPaletteAssetSource,
|
|
28
|
-
CropPresetsAssetSource,
|
|
29
|
-
DemoAssetSources,
|
|
30
|
-
EffectsAssetSource,
|
|
31
|
-
FiltersAssetSource,
|
|
32
|
-
PagePresetsAssetSource,
|
|
33
|
-
StickerAssetSource,
|
|
34
|
-
TextAssetSource,
|
|
35
|
-
TextComponentAssetSource,
|
|
36
|
-
TypefaceAssetSource,
|
|
37
|
-
UploadAssetSources,
|
|
38
|
-
VectorShapeAssetSource
|
|
39
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
40
|
-
import { DesignEditorConfig } from './design-editor/plugin';
|
|
41
|
-
import packageJson from './package.json';
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-replace-colors-server-js/server-js.ts reference-only
|
|
22
|
+
import CreativeEngine from '@cesdk/node';
|
|
23
|
+
import { config } from 'dotenv';
|
|
24
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
42
25
|
import { calculateGridLayout } from './utils';
|
|
43
26
|
|
|
27
|
+
// Load environment variables
|
|
28
|
+
config();
|
|
29
|
+
|
|
44
30
|
/**
|
|
45
|
-
* CE.SDK
|
|
31
|
+
* CE.SDK Server Guide: Replace Colors
|
|
46
32
|
*
|
|
47
33
|
* Demonstrates color replacement using Recolor and Green Screen effects:
|
|
48
|
-
* - Using the built-in effects UI
|
|
49
34
|
* - Creating and applying Recolor effects
|
|
50
35
|
* - Creating and applying Green Screen effects
|
|
51
36
|
* - Configuring effect properties
|
|
52
37
|
* - Managing multiple effects
|
|
53
38
|
*/
|
|
54
|
-
class Example implements EditorPlugin {
|
|
55
|
-
name = packageJson.name;
|
|
56
39
|
|
|
57
|
-
|
|
40
|
+
// Initialize CE.SDK engine in headless mode
|
|
41
|
+
const engine = await CreativeEngine.init({
|
|
42
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
43
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
44
|
+
});
|
|
58
45
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
46
|
+
try {
|
|
47
|
+
// Create a design scene with specific page dimensions
|
|
48
|
+
engine.scene.create('VerticalStack', {
|
|
49
|
+
page: { size: { width: 800, height: 600 } },
|
|
50
|
+
});
|
|
51
|
+
const page = engine.block.findByType('page')[0];
|
|
52
|
+
|
|
53
|
+
const pageWidth = engine.block.getWidth(page);
|
|
54
|
+
const pageHeight = engine.block.getHeight(page);
|
|
55
|
+
|
|
56
|
+
// Calculate responsive grid layout for 6 examples
|
|
57
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 6);
|
|
58
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
59
|
+
|
|
60
|
+
// Use sample images for demonstrations
|
|
61
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
62
|
+
const blockSize = { width: blockWidth, height: blockHeight };
|
|
63
|
+
|
|
64
|
+
// Create a Recolor effect to swap red colors to blue
|
|
65
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
66
|
+
engine.block.appendChild(page, block1);
|
|
67
|
+
|
|
68
|
+
const recolorEffect = engine.block.createEffect('recolor');
|
|
69
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
70
|
+
r: 1.0,
|
|
71
|
+
g: 0.0,
|
|
72
|
+
b: 0.0,
|
|
73
|
+
a: 1.0,
|
|
74
|
+
}); // Red source color
|
|
75
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
76
|
+
r: 0.0,
|
|
77
|
+
g: 0.5,
|
|
78
|
+
b: 1.0,
|
|
79
|
+
a: 1.0,
|
|
80
|
+
}); // Blue target color
|
|
81
|
+
engine.block.appendEffect(block1, recolorEffect);
|
|
82
|
+
|
|
83
|
+
// Configure color matching precision for Recolor effect
|
|
84
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
85
|
+
engine.block.appendChild(page, block2);
|
|
86
|
+
|
|
87
|
+
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
88
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
89
|
+
r: 0.8,
|
|
90
|
+
g: 0.6,
|
|
91
|
+
b: 0.4,
|
|
92
|
+
a: 1.0,
|
|
93
|
+
}); // Skin tone source
|
|
94
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
95
|
+
r: 0.3,
|
|
96
|
+
g: 0.7,
|
|
97
|
+
b: 0.3,
|
|
98
|
+
a: 1.0,
|
|
99
|
+
}); // Green tint
|
|
100
|
+
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
101
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
102
|
+
// Adjust brightness match tolerance
|
|
103
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/brightnessMatch', 0.2);
|
|
104
|
+
// Adjust edge smoothness
|
|
105
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
106
|
+
engine.block.appendEffect(block2, recolorEffect2);
|
|
107
|
+
|
|
108
|
+
// Create a Green Screen effect to remove green backgrounds
|
|
109
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
110
|
+
engine.block.appendChild(page, block3);
|
|
111
|
+
|
|
112
|
+
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
113
|
+
// Specify the color to remove (green)
|
|
114
|
+
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
115
|
+
r: 0.0,
|
|
116
|
+
g: 1.0,
|
|
117
|
+
b: 0.0,
|
|
118
|
+
a: 1.0,
|
|
119
|
+
});
|
|
120
|
+
engine.block.appendEffect(block3, greenScreenEffect);
|
|
121
|
+
|
|
122
|
+
// Fine-tune Green Screen removal parameters
|
|
123
|
+
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
124
|
+
engine.block.appendChild(page, block4);
|
|
125
|
+
|
|
126
|
+
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
127
|
+
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
128
|
+
r: 0.2,
|
|
129
|
+
g: 0.8,
|
|
130
|
+
b: 0.3,
|
|
131
|
+
a: 1.0,
|
|
132
|
+
}); // Specific green shade
|
|
133
|
+
// Adjust color match tolerance
|
|
134
|
+
engine.block.setFloat(
|
|
135
|
+
greenScreenEffect2,
|
|
136
|
+
'effect/green_screen/colorMatch',
|
|
137
|
+
0.4
|
|
138
|
+
);
|
|
139
|
+
// Adjust edge smoothness for cleaner removal
|
|
140
|
+
engine.block.setFloat(
|
|
141
|
+
greenScreenEffect2,
|
|
142
|
+
'effect/green_screen/smoothness',
|
|
143
|
+
0.2
|
|
144
|
+
);
|
|
145
|
+
// Reduce color spill from green background
|
|
146
|
+
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
147
|
+
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
148
|
+
|
|
149
|
+
// Demonstrate managing multiple effects on a block
|
|
150
|
+
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
151
|
+
engine.block.appendChild(page, block5);
|
|
152
|
+
|
|
153
|
+
// Add multiple effects to the same block
|
|
154
|
+
const recolor1 = engine.block.createEffect('recolor');
|
|
155
|
+
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
156
|
+
r: 1.0,
|
|
157
|
+
g: 0.0,
|
|
158
|
+
b: 0.0,
|
|
159
|
+
a: 1.0,
|
|
160
|
+
});
|
|
161
|
+
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
162
|
+
r: 0.0,
|
|
163
|
+
g: 0.0,
|
|
164
|
+
b: 1.0,
|
|
165
|
+
a: 1.0,
|
|
166
|
+
});
|
|
167
|
+
engine.block.appendEffect(block5, recolor1);
|
|
168
|
+
|
|
169
|
+
const recolor2 = engine.block.createEffect('recolor');
|
|
170
|
+
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
171
|
+
r: 0.0,
|
|
172
|
+
g: 1.0,
|
|
173
|
+
b: 0.0,
|
|
174
|
+
a: 1.0,
|
|
175
|
+
});
|
|
176
|
+
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
177
|
+
r: 1.0,
|
|
178
|
+
g: 0.5,
|
|
179
|
+
b: 0.0,
|
|
180
|
+
a: 1.0,
|
|
181
|
+
});
|
|
182
|
+
engine.block.appendEffect(block5, recolor2);
|
|
63
183
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
91
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
92
|
-
|
|
93
|
-
await cesdk.actions.run('scene.create', {
|
|
94
|
-
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
95
|
-
});
|
|
184
|
+
// Get all effects on the block
|
|
185
|
+
const effects = engine.block.getEffects(block5);
|
|
186
|
+
// eslint-disable-next-line no-console
|
|
187
|
+
console.log('Number of effects:', effects.length); // 2
|
|
188
|
+
|
|
189
|
+
// Disable the first effect without removing it
|
|
190
|
+
engine.block.setEffectEnabled(effects[0], false);
|
|
191
|
+
|
|
192
|
+
// Check if effect is enabled
|
|
193
|
+
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
194
|
+
// eslint-disable-next-line no-console
|
|
195
|
+
console.log('First effect enabled:', isEnabled); // false
|
|
196
|
+
|
|
197
|
+
// Apply consistent color replacement across multiple blocks
|
|
198
|
+
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
199
|
+
engine.block.appendChild(page, block6);
|
|
200
|
+
|
|
201
|
+
// Find all image blocks in the scene
|
|
202
|
+
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
203
|
+
|
|
204
|
+
// Apply a consistent recolor effect to each block
|
|
205
|
+
allBlocks.forEach((blockId) => {
|
|
206
|
+
// Skip if block already has effects
|
|
207
|
+
if (engine.block.getEffects(blockId).length > 0) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
96
210
|
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const pageWidth = engine.block.getWidth(page);
|
|
101
|
-
const pageHeight = engine.block.getHeight(page);
|
|
102
|
-
|
|
103
|
-
// Enable effects in the inspector panel using the Feature API
|
|
104
|
-
cesdk.feature.enable('ly.img.effect'); // Enable all effects including recolor and green screen
|
|
105
|
-
|
|
106
|
-
// Calculate responsive grid layout for 6 examples
|
|
107
|
-
const layout = calculateGridLayout(pageWidth, pageHeight, 6);
|
|
108
|
-
const { blockWidth, blockHeight, getPosition } = layout;
|
|
109
|
-
|
|
110
|
-
// Use sample images for demonstrations
|
|
111
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
112
|
-
const blockSize = { width: blockWidth, height: blockHeight };
|
|
113
|
-
|
|
114
|
-
// Create a Recolor effect to swap red colors to blue
|
|
115
|
-
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
116
|
-
engine.block.appendChild(page, block1);
|
|
117
|
-
|
|
118
|
-
const recolorEffect = engine.block.createEffect('recolor');
|
|
119
|
-
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
120
|
-
r: 1.0,
|
|
121
|
-
g: 0.0,
|
|
122
|
-
b: 0.0,
|
|
123
|
-
a: 1.0
|
|
124
|
-
}); // Red source color
|
|
125
|
-
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
126
|
-
r: 0.0,
|
|
127
|
-
g: 0.5,
|
|
128
|
-
b: 1.0,
|
|
129
|
-
a: 1.0
|
|
130
|
-
}); // Blue target color
|
|
131
|
-
engine.block.appendEffect(block1, recolorEffect);
|
|
132
|
-
|
|
133
|
-
// Select this block to show the effects panel
|
|
134
|
-
engine.block.setSelected(block1, true);
|
|
135
|
-
|
|
136
|
-
// Configure color matching precision for Recolor effect
|
|
137
|
-
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
138
|
-
engine.block.appendChild(page, block2);
|
|
139
|
-
|
|
140
|
-
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
141
|
-
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
211
|
+
const batchRecolor = engine.block.createEffect('recolor');
|
|
212
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/fromColor', {
|
|
142
213
|
r: 0.8,
|
|
143
|
-
g: 0.6,
|
|
144
|
-
b: 0.4,
|
|
145
|
-
a: 1.0
|
|
146
|
-
}); // Skin tone source
|
|
147
|
-
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
148
|
-
r: 0.3,
|
|
149
214
|
g: 0.7,
|
|
150
|
-
b: 0.
|
|
151
|
-
a: 1.0
|
|
152
|
-
}); // Green tint
|
|
153
|
-
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
154
|
-
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
155
|
-
// Adjust brightness match tolerance
|
|
156
|
-
engine.block.setFloat(
|
|
157
|
-
recolorEffect2,
|
|
158
|
-
'effect/recolor/brightnessMatch',
|
|
159
|
-
0.2
|
|
160
|
-
);
|
|
161
|
-
// Adjust edge smoothness
|
|
162
|
-
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
163
|
-
engine.block.appendEffect(block2, recolorEffect2);
|
|
164
|
-
|
|
165
|
-
// Create a Green Screen effect to remove green backgrounds
|
|
166
|
-
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
167
|
-
engine.block.appendChild(page, block3);
|
|
168
|
-
|
|
169
|
-
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
170
|
-
// Specify the color to remove (green)
|
|
171
|
-
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
172
|
-
r: 0.0,
|
|
173
|
-
g: 1.0,
|
|
174
|
-
b: 0.0,
|
|
175
|
-
a: 1.0
|
|
215
|
+
b: 0.6,
|
|
216
|
+
a: 1.0,
|
|
176
217
|
});
|
|
177
|
-
engine.block.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
184
|
-
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
185
|
-
r: 0.2,
|
|
186
|
-
g: 0.8,
|
|
187
|
-
b: 0.3,
|
|
188
|
-
a: 1.0
|
|
189
|
-
}); // Specific green shade
|
|
190
|
-
// Adjust color match tolerance
|
|
191
|
-
engine.block.setFloat(
|
|
192
|
-
greenScreenEffect2,
|
|
193
|
-
'effect/green_screen/colorMatch',
|
|
194
|
-
0.4
|
|
195
|
-
);
|
|
196
|
-
// Adjust edge smoothness for cleaner removal
|
|
197
|
-
engine.block.setFloat(
|
|
198
|
-
greenScreenEffect2,
|
|
199
|
-
'effect/green_screen/smoothness',
|
|
200
|
-
0.2
|
|
201
|
-
);
|
|
202
|
-
// Reduce color spill from green background
|
|
203
|
-
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
204
|
-
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
205
|
-
|
|
206
|
-
// Demonstrate managing multiple effects on a block
|
|
207
|
-
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
208
|
-
engine.block.appendChild(page, block5);
|
|
209
|
-
|
|
210
|
-
// Add multiple effects to the same block
|
|
211
|
-
const recolor1 = engine.block.createEffect('recolor');
|
|
212
|
-
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
213
|
-
r: 1.0,
|
|
214
|
-
g: 0.0,
|
|
215
|
-
b: 0.0,
|
|
216
|
-
a: 1.0
|
|
217
|
-
});
|
|
218
|
-
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
219
|
-
r: 0.0,
|
|
220
|
-
g: 0.0,
|
|
221
|
-
b: 1.0,
|
|
222
|
-
a: 1.0
|
|
223
|
-
});
|
|
224
|
-
engine.block.appendEffect(block5, recolor1);
|
|
225
|
-
|
|
226
|
-
const recolor2 = engine.block.createEffect('recolor');
|
|
227
|
-
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
228
|
-
r: 0.0,
|
|
229
|
-
g: 1.0,
|
|
230
|
-
b: 0.0,
|
|
231
|
-
a: 1.0
|
|
232
|
-
});
|
|
233
|
-
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
234
|
-
r: 1.0,
|
|
235
|
-
g: 0.5,
|
|
236
|
-
b: 0.0,
|
|
237
|
-
a: 1.0
|
|
238
|
-
});
|
|
239
|
-
engine.block.appendEffect(block5, recolor2);
|
|
240
|
-
|
|
241
|
-
// Get all effects on the block
|
|
242
|
-
const effects = engine.block.getEffects(block5);
|
|
243
|
-
// eslint-disable-next-line no-console
|
|
244
|
-
console.log('Number of effects:', effects.length); // 2
|
|
245
|
-
|
|
246
|
-
// Disable the first effect without removing it
|
|
247
|
-
engine.block.setEffectEnabled(effects[0], false);
|
|
248
|
-
|
|
249
|
-
// Check if effect is enabled
|
|
250
|
-
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
251
|
-
// eslint-disable-next-line no-console
|
|
252
|
-
console.log('First effect enabled:', isEnabled); // false
|
|
253
|
-
|
|
254
|
-
// Apply consistent color replacement across multiple blocks
|
|
255
|
-
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
256
|
-
engine.block.appendChild(page, block6);
|
|
257
|
-
|
|
258
|
-
// Find all image blocks in the scene
|
|
259
|
-
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
260
|
-
|
|
261
|
-
// Apply a consistent recolor effect to each block
|
|
262
|
-
allBlocks.forEach((blockId) => {
|
|
263
|
-
// Skip if block already has effects
|
|
264
|
-
if (engine.block.getEffects(blockId).length > 0) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
const batchRecolor = engine.block.createEffect('recolor');
|
|
269
|
-
engine.block.setColor(batchRecolor, 'effect/recolor/fromColor', {
|
|
270
|
-
r: 0.8,
|
|
271
|
-
g: 0.7,
|
|
272
|
-
b: 0.6,
|
|
273
|
-
a: 1.0
|
|
274
|
-
});
|
|
275
|
-
engine.block.setColor(batchRecolor, 'effect/recolor/toColor', {
|
|
276
|
-
r: 0.6,
|
|
277
|
-
g: 0.7,
|
|
278
|
-
b: 0.9,
|
|
279
|
-
a: 1.0
|
|
280
|
-
});
|
|
281
|
-
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
282
|
-
engine.block.appendEffect(blockId, batchRecolor);
|
|
218
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/toColor', {
|
|
219
|
+
r: 0.6,
|
|
220
|
+
g: 0.7,
|
|
221
|
+
b: 0.9,
|
|
222
|
+
a: 1.0,
|
|
283
223
|
});
|
|
224
|
+
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
225
|
+
engine.block.appendEffect(blockId, batchRecolor);
|
|
226
|
+
});
|
|
284
227
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
228
|
+
// Position all blocks in a grid layout
|
|
229
|
+
const blocks = [block1, block2, block3, block4, block5, block6];
|
|
230
|
+
blocks.forEach((block, index) => {
|
|
231
|
+
const pos = getPosition(index);
|
|
232
|
+
engine.block.setPositionX(block, pos.x);
|
|
233
|
+
engine.block.setPositionY(block, pos.y);
|
|
234
|
+
});
|
|
292
235
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
236
|
+
// Export the result to PNG
|
|
237
|
+
const outputDir = './output';
|
|
238
|
+
if (!existsSync(outputDir)) {
|
|
239
|
+
mkdirSync(outputDir, { recursive: true });
|
|
296
240
|
}
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
export default Example;
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
This guide shows how to enable the built-in effects UI for interactive color replacement and apply effects programmatically using the block API.
|
|
303
|
-
|
|
304
|
-
## Using the Built-in Effects UI
|
|
305
241
|
|
|
306
|
-
|
|
242
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
243
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
244
|
+
writeFileSync(`${outputDir}/replace-colors-result.png`, buffer);
|
|
307
245
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
//
|
|
312
|
-
|
|
246
|
+
// eslint-disable-next-line no-console
|
|
247
|
+
console.log('✓ Exported result to output/replace-colors-result.png');
|
|
248
|
+
} finally {
|
|
249
|
+
// Always dispose the engine to free resources
|
|
250
|
+
engine.dispose();
|
|
251
|
+
}
|
|
313
252
|
```
|
|
314
253
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
### User Workflow
|
|
318
|
-
|
|
319
|
-
With effects enabled, users can replace colors through the inspector panel:
|
|
320
|
-
|
|
321
|
-
1. **Select an image block** - Click an image or graphic block on the canvas
|
|
322
|
-
2. **Open inspector** - The inspector shows available options for the selected element
|
|
323
|
-
3. **Find effects section** - Scroll to the effects section
|
|
324
|
-
4. **Choose Recolor or Green Screen** - Click the desired effect
|
|
325
|
-
5. **Select colors** - Use the color picker to specify source and target colors
|
|
326
|
-
6. **Adjust parameters** - Fine-tune color matching, smoothness, and intensity
|
|
327
|
-
7. **Toggle effects** - Enable or disable effects to compare results
|
|
328
|
-
|
|
329
|
-
Users can experiment with color replacements and see results immediately.
|
|
254
|
+
This guide shows how to apply color replacement effects programmatically using the engine API in a headless Node.js environment.
|
|
330
255
|
|
|
331
256
|
## Programmatic Color Replacement
|
|
332
257
|
|
|
@@ -335,74 +260,38 @@ Users can experiment with color replacements and see results immediately.
|
|
|
335
260
|
To apply color replacement programmatically, we set up CE.SDK with the proper configuration.
|
|
336
261
|
|
|
337
262
|
```typescript highlight-setup
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
343
|
-
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
344
|
-
await cesdk.addPlugin(
|
|
345
|
-
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
346
|
-
);
|
|
347
|
-
await cesdk.addPlugin(
|
|
348
|
-
new DemoAssetSources({
|
|
349
|
-
include: [
|
|
350
|
-
'ly.img.templates.blank.*',
|
|
351
|
-
'ly.img.templates.presentation.*',
|
|
352
|
-
'ly.img.templates.print.*',
|
|
353
|
-
'ly.img.templates.social.*',
|
|
354
|
-
'ly.img.image.*'
|
|
355
|
-
]
|
|
356
|
-
})
|
|
357
|
-
);
|
|
358
|
-
await cesdk.addPlugin(new EffectsAssetSource());
|
|
359
|
-
await cesdk.addPlugin(new FiltersAssetSource());
|
|
360
|
-
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
361
|
-
await cesdk.addPlugin(new StickerAssetSource());
|
|
362
|
-
await cesdk.addPlugin(new TextAssetSource());
|
|
363
|
-
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
364
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
365
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
366
|
-
|
|
367
|
-
await cesdk.actions.run('scene.create', {
|
|
368
|
-
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
263
|
+
// Initialize CE.SDK engine in headless mode
|
|
264
|
+
const engine = await CreativeEngine.init({
|
|
265
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
266
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
369
267
|
});
|
|
370
|
-
|
|
371
|
-
const engine = cesdk.engine;
|
|
372
|
-
const page = engine.block.findByType('page')[0];
|
|
373
|
-
|
|
374
|
-
const pageWidth = engine.block.getWidth(page);
|
|
375
|
-
const pageHeight = engine.block.getHeight(page);
|
|
376
268
|
```
|
|
377
269
|
|
|
378
|
-
This initializes CE.SDK
|
|
270
|
+
This initializes the CE.SDK engine in headless mode, ready to process images with color replacement effects.
|
|
379
271
|
|
|
380
272
|
### Creating and Applying Recolor Effects
|
|
381
273
|
|
|
382
274
|
The Recolor effect swaps one color for another throughout an image. We create a Recolor effect using `engine.block.createEffect('recolor')` and specify the source and target colors.
|
|
383
275
|
|
|
384
276
|
```typescript highlight-create-recolor-effect
|
|
385
|
-
// Create a Recolor effect to swap red colors to blue
|
|
386
|
-
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
387
|
-
engine.block.appendChild(page, block1);
|
|
388
|
-
|
|
389
|
-
const recolorEffect = engine.block.createEffect('recolor');
|
|
390
|
-
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
}); // Red source color
|
|
396
|
-
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
}); // Blue target color
|
|
402
|
-
engine.block.appendEffect(block1, recolorEffect);
|
|
403
|
-
|
|
404
|
-
// Select this block to show the effects panel
|
|
405
|
-
engine.block.setSelected(block1, true);
|
|
277
|
+
// Create a Recolor effect to swap red colors to blue
|
|
278
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
279
|
+
engine.block.appendChild(page, block1);
|
|
280
|
+
|
|
281
|
+
const recolorEffect = engine.block.createEffect('recolor');
|
|
282
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/fromColor', {
|
|
283
|
+
r: 1.0,
|
|
284
|
+
g: 0.0,
|
|
285
|
+
b: 0.0,
|
|
286
|
+
a: 1.0,
|
|
287
|
+
}); // Red source color
|
|
288
|
+
engine.block.setColor(recolorEffect, 'effect/recolor/toColor', {
|
|
289
|
+
r: 0.0,
|
|
290
|
+
g: 0.5,
|
|
291
|
+
b: 1.0,
|
|
292
|
+
a: 1.0,
|
|
293
|
+
}); // Blue target color
|
|
294
|
+
engine.block.appendEffect(block1, recolorEffect);
|
|
406
295
|
```
|
|
407
296
|
|
|
408
297
|
The Recolor effect identifies pixels matching the source color (fromColor) and replaces them with the target color (toColor). Color values use RGBA format with values from 0.0 to 1.0.
|
|
@@ -414,30 +303,30 @@ The Recolor effect identifies pixels matching the source color (fromColor) and r
|
|
|
414
303
|
We adjust the matching tolerance and smoothness parameters to control how precisely colors must match before replacement.
|
|
415
304
|
|
|
416
305
|
```typescript highlight-configure-recolor-matching
|
|
417
|
-
// Configure color matching precision for Recolor effect
|
|
418
|
-
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
419
|
-
engine.block.appendChild(page, block2);
|
|
420
|
-
|
|
421
|
-
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
422
|
-
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
}); // Skin tone source
|
|
428
|
-
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}); // Green tint
|
|
434
|
-
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
435
|
-
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
436
|
-
// Adjust brightness match tolerance
|
|
437
|
-
engine.block.setFloat(recolorEffect2, 'effect/recolor/brightnessMatch', 0.2);
|
|
438
|
-
// Adjust edge smoothness
|
|
439
|
-
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
440
|
-
engine.block.appendEffect(block2, recolorEffect2);
|
|
306
|
+
// Configure color matching precision for Recolor effect
|
|
307
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
308
|
+
engine.block.appendChild(page, block2);
|
|
309
|
+
|
|
310
|
+
const recolorEffect2 = engine.block.createEffect('recolor');
|
|
311
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/fromColor', {
|
|
312
|
+
r: 0.8,
|
|
313
|
+
g: 0.6,
|
|
314
|
+
b: 0.4,
|
|
315
|
+
a: 1.0,
|
|
316
|
+
}); // Skin tone source
|
|
317
|
+
engine.block.setColor(recolorEffect2, 'effect/recolor/toColor', {
|
|
318
|
+
r: 0.3,
|
|
319
|
+
g: 0.7,
|
|
320
|
+
b: 0.3,
|
|
321
|
+
a: 1.0,
|
|
322
|
+
}); // Green tint
|
|
323
|
+
// Adjust color match tolerance (0-1, higher = more inclusive)
|
|
324
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/colorMatch', 0.3);
|
|
325
|
+
// Adjust brightness match tolerance
|
|
326
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/brightnessMatch', 0.2);
|
|
327
|
+
// Adjust edge smoothness
|
|
328
|
+
engine.block.setFloat(recolorEffect2, 'effect/recolor/smoothness', 0.1);
|
|
329
|
+
engine.block.appendEffect(block2, recolorEffect2);
|
|
441
330
|
```
|
|
442
331
|
|
|
443
332
|
The Recolor effect provides these parameters:
|
|
@@ -453,19 +342,19 @@ These parameters help handle images where colors vary due to lighting, shadows,
|
|
|
453
342
|
The Green Screen effect removes backgrounds by making specific colors transparent.
|
|
454
343
|
|
|
455
344
|
```typescript highlight-create-green-screen-effect
|
|
456
|
-
// Create a Green Screen effect to remove green backgrounds
|
|
457
|
-
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
458
|
-
engine.block.appendChild(page, block3);
|
|
459
|
-
|
|
460
|
-
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
461
|
-
// Specify the color to remove (green)
|
|
462
|
-
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
});
|
|
468
|
-
engine.block.appendEffect(block3, greenScreenEffect);
|
|
345
|
+
// Create a Green Screen effect to remove green backgrounds
|
|
346
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
347
|
+
engine.block.appendChild(page, block3);
|
|
348
|
+
|
|
349
|
+
const greenScreenEffect = engine.block.createEffect('green_screen');
|
|
350
|
+
// Specify the color to remove (green)
|
|
351
|
+
engine.block.setColor(greenScreenEffect, 'effect/green_screen/fromColor', {
|
|
352
|
+
r: 0.0,
|
|
353
|
+
g: 1.0,
|
|
354
|
+
b: 0.0,
|
|
355
|
+
a: 1.0,
|
|
356
|
+
});
|
|
357
|
+
engine.block.appendEffect(block3, greenScreenEffect);
|
|
469
358
|
```
|
|
470
359
|
|
|
471
360
|
The Green Screen effect identifies pixels matching the specified color (fromColor) and makes them transparent. This works best with solid-color backgrounds like green screens or blue screens.
|
|
@@ -475,32 +364,32 @@ The Green Screen effect identifies pixels matching the specified color (fromColo
|
|
|
475
364
|
We adjust the color matching tolerance, edge smoothness, and spill suppression parameters.
|
|
476
365
|
|
|
477
366
|
```typescript highlight-configure-green-screen
|
|
478
|
-
// Fine-tune Green Screen removal parameters
|
|
479
|
-
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
480
|
-
engine.block.appendChild(page, block4);
|
|
481
|
-
|
|
482
|
-
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
483
|
-
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
}); // Specific green shade
|
|
489
|
-
// Adjust color match tolerance
|
|
490
|
-
engine.block.setFloat(
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
);
|
|
495
|
-
// Adjust edge smoothness for cleaner removal
|
|
496
|
-
engine.block.setFloat(
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
);
|
|
501
|
-
// Reduce color spill from green background
|
|
502
|
-
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
503
|
-
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
367
|
+
// Fine-tune Green Screen removal parameters
|
|
368
|
+
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
369
|
+
engine.block.appendChild(page, block4);
|
|
370
|
+
|
|
371
|
+
const greenScreenEffect2 = engine.block.createEffect('green_screen');
|
|
372
|
+
engine.block.setColor(greenScreenEffect2, 'effect/green_screen/fromColor', {
|
|
373
|
+
r: 0.2,
|
|
374
|
+
g: 0.8,
|
|
375
|
+
b: 0.3,
|
|
376
|
+
a: 1.0,
|
|
377
|
+
}); // Specific green shade
|
|
378
|
+
// Adjust color match tolerance
|
|
379
|
+
engine.block.setFloat(
|
|
380
|
+
greenScreenEffect2,
|
|
381
|
+
'effect/green_screen/colorMatch',
|
|
382
|
+
0.4
|
|
383
|
+
);
|
|
384
|
+
// Adjust edge smoothness for cleaner removal
|
|
385
|
+
engine.block.setFloat(
|
|
386
|
+
greenScreenEffect2,
|
|
387
|
+
'effect/green_screen/smoothness',
|
|
388
|
+
0.2
|
|
389
|
+
);
|
|
390
|
+
// Reduce color spill from green background
|
|
391
|
+
engine.block.setFloat(greenScreenEffect2, 'effect/green_screen/spill', 0.5);
|
|
392
|
+
engine.block.appendEffect(block4, greenScreenEffect2);
|
|
504
393
|
```
|
|
505
394
|
|
|
506
395
|
The Green Screen effect provides these parameters:
|
|
@@ -516,53 +405,53 @@ These parameters help create clean composites without harsh edges or color artif
|
|
|
516
405
|
We can apply multiple color replacement effects to the same block. CE.SDK maintains an effect stack for each block, applying effects in the order they were added.
|
|
517
406
|
|
|
518
407
|
```typescript highlight-manage-effects
|
|
519
|
-
// Demonstrate managing multiple effects on a block
|
|
520
|
-
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
521
|
-
engine.block.appendChild(page, block5);
|
|
522
|
-
|
|
523
|
-
// Add multiple effects to the same block
|
|
524
|
-
const recolor1 = engine.block.createEffect('recolor');
|
|
525
|
-
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
});
|
|
531
|
-
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
});
|
|
537
|
-
engine.block.appendEffect(block5, recolor1);
|
|
538
|
-
|
|
539
|
-
const recolor2 = engine.block.createEffect('recolor');
|
|
540
|
-
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
});
|
|
546
|
-
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
});
|
|
552
|
-
engine.block.appendEffect(block5, recolor2);
|
|
408
|
+
// Demonstrate managing multiple effects on a block
|
|
409
|
+
const block5 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
410
|
+
engine.block.appendChild(page, block5);
|
|
411
|
+
|
|
412
|
+
// Add multiple effects to the same block
|
|
413
|
+
const recolor1 = engine.block.createEffect('recolor');
|
|
414
|
+
engine.block.setColor(recolor1, 'effect/recolor/fromColor', {
|
|
415
|
+
r: 1.0,
|
|
416
|
+
g: 0.0,
|
|
417
|
+
b: 0.0,
|
|
418
|
+
a: 1.0,
|
|
419
|
+
});
|
|
420
|
+
engine.block.setColor(recolor1, 'effect/recolor/toColor', {
|
|
421
|
+
r: 0.0,
|
|
422
|
+
g: 0.0,
|
|
423
|
+
b: 1.0,
|
|
424
|
+
a: 1.0,
|
|
425
|
+
});
|
|
426
|
+
engine.block.appendEffect(block5, recolor1);
|
|
427
|
+
|
|
428
|
+
const recolor2 = engine.block.createEffect('recolor');
|
|
429
|
+
engine.block.setColor(recolor2, 'effect/recolor/fromColor', {
|
|
430
|
+
r: 0.0,
|
|
431
|
+
g: 1.0,
|
|
432
|
+
b: 0.0,
|
|
433
|
+
a: 1.0,
|
|
434
|
+
});
|
|
435
|
+
engine.block.setColor(recolor2, 'effect/recolor/toColor', {
|
|
436
|
+
r: 1.0,
|
|
437
|
+
g: 0.5,
|
|
438
|
+
b: 0.0,
|
|
439
|
+
a: 1.0,
|
|
440
|
+
});
|
|
441
|
+
engine.block.appendEffect(block5, recolor2);
|
|
553
442
|
|
|
554
|
-
// Get all effects on the block
|
|
555
|
-
const effects = engine.block.getEffects(block5);
|
|
556
|
-
// eslint-disable-next-line no-console
|
|
557
|
-
console.log('Number of effects:', effects.length); // 2
|
|
443
|
+
// Get all effects on the block
|
|
444
|
+
const effects = engine.block.getEffects(block5);
|
|
445
|
+
// eslint-disable-next-line no-console
|
|
446
|
+
console.log('Number of effects:', effects.length); // 2
|
|
558
447
|
|
|
559
|
-
// Disable the first effect without removing it
|
|
560
|
-
engine.block.setEffectEnabled(effects[0], false);
|
|
448
|
+
// Disable the first effect without removing it
|
|
449
|
+
engine.block.setEffectEnabled(effects[0], false);
|
|
561
450
|
|
|
562
|
-
// Check if effect is enabled
|
|
563
|
-
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
564
|
-
// eslint-disable-next-line no-console
|
|
565
|
-
console.log('First effect enabled:', isEnabled); // false
|
|
451
|
+
// Check if effect is enabled
|
|
452
|
+
const isEnabled = engine.block.isEffectEnabled(effects[0]);
|
|
453
|
+
// eslint-disable-next-line no-console
|
|
454
|
+
console.log('First effect enabled:', isEnabled); // false
|
|
566
455
|
```
|
|
567
456
|
|
|
568
457
|
Effect management capabilities:
|
|
@@ -579,36 +468,36 @@ Disabling effects is useful for before/after comparisons or performance optimiza
|
|
|
579
468
|
We can loop through all image blocks in a scene and apply the same effect configuration to each.
|
|
580
469
|
|
|
581
470
|
```typescript highlight-batch-processing
|
|
582
|
-
// Apply consistent color replacement across multiple blocks
|
|
583
|
-
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
584
|
-
engine.block.appendChild(page, block6);
|
|
585
|
-
|
|
586
|
-
// Find all image blocks in the scene
|
|
587
|
-
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
588
|
-
|
|
589
|
-
// Apply a consistent recolor effect to each block
|
|
590
|
-
allBlocks.forEach((blockId) => {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
471
|
+
// Apply consistent color replacement across multiple blocks
|
|
472
|
+
const block6 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
473
|
+
engine.block.appendChild(page, block6);
|
|
474
|
+
|
|
475
|
+
// Find all image blocks in the scene
|
|
476
|
+
const allBlocks = engine.block.findByType('//ly.img.ubq/graphic');
|
|
477
|
+
|
|
478
|
+
// Apply a consistent recolor effect to each block
|
|
479
|
+
allBlocks.forEach((blockId) => {
|
|
480
|
+
// Skip if block already has effects
|
|
481
|
+
if (engine.block.getEffects(blockId).length > 0) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
595
484
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
485
|
+
const batchRecolor = engine.block.createEffect('recolor');
|
|
486
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/fromColor', {
|
|
487
|
+
r: 0.8,
|
|
488
|
+
g: 0.7,
|
|
489
|
+
b: 0.6,
|
|
490
|
+
a: 1.0,
|
|
491
|
+
});
|
|
492
|
+
engine.block.setColor(batchRecolor, 'effect/recolor/toColor', {
|
|
493
|
+
r: 0.6,
|
|
494
|
+
g: 0.7,
|
|
495
|
+
b: 0.9,
|
|
496
|
+
a: 1.0,
|
|
497
|
+
});
|
|
498
|
+
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
499
|
+
engine.block.appendEffect(blockId, batchRecolor);
|
|
608
500
|
});
|
|
609
|
-
engine.block.setFloat(batchRecolor, 'effect/recolor/colorMatch', 0.25);
|
|
610
|
-
engine.block.appendEffect(blockId, batchRecolor);
|
|
611
|
-
});
|
|
612
501
|
```
|
|
613
502
|
|
|
614
503
|
Batch processing use cases:
|
|
@@ -619,6 +508,38 @@ Batch processing use cases:
|
|
|
619
508
|
|
|
620
509
|
The `engine.block.findByType()` method locates all graphic blocks in the scene.
|
|
621
510
|
|
|
511
|
+
## Exporting Results
|
|
512
|
+
|
|
513
|
+
After applying color replacement effects, we export the final result to the file system.
|
|
514
|
+
|
|
515
|
+
```typescript highlight-export
|
|
516
|
+
// Export the result to PNG
|
|
517
|
+
const outputDir = './output';
|
|
518
|
+
if (!existsSync(outputDir)) {
|
|
519
|
+
mkdirSync(outputDir, { recursive: true });
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
523
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
524
|
+
writeFileSync(`${outputDir}/replace-colors-result.png`, buffer);
|
|
525
|
+
|
|
526
|
+
// eslint-disable-next-line no-console
|
|
527
|
+
console.log('✓ Exported result to output/replace-colors-result.png');
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
The `engine.block.export()` method renders the scene with all effects applied and returns a Blob. We convert this to a Buffer and save it as a PNG file.
|
|
531
|
+
|
|
532
|
+
## Cleanup
|
|
533
|
+
|
|
534
|
+
We must dispose the engine to free system resources when processing is complete.
|
|
535
|
+
|
|
536
|
+
```typescript highlight-cleanup
|
|
537
|
+
// Always dispose the engine to free resources
|
|
538
|
+
engine.dispose();
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
Always use a try-finally block to ensure the engine is disposed even if errors occur during processing.
|
|
542
|
+
|
|
622
543
|
## Troubleshooting
|
|
623
544
|
|
|
624
545
|
Common issues and solutions when working with color replacement effects:
|
|
@@ -649,32 +570,33 @@ Common issues and solutions when working with color replacement effects:
|
|
|
649
570
|
|
|
650
571
|
## API Reference
|
|
651
572
|
|
|
652
|
-
| Method
|
|
653
|
-
|
|
654
|
-
| `engine.block.createEffect()`
|
|
655
|
-
| `engine.block.appendEffect()`
|
|
656
|
-
| `engine.block.insertEffect()`
|
|
657
|
-
| `engine.block.removeEffect()`
|
|
658
|
-
| `engine.block.getEffects()`
|
|
659
|
-
| `engine.block.supportsEffects()`
|
|
660
|
-
| `engine.block.setColor()`
|
|
661
|
-
| `engine.block.getColor()`
|
|
662
|
-
| `engine.block.setFloat()`
|
|
663
|
-
| `engine.block.getFloat()`
|
|
664
|
-
| `engine.block.setEffectEnabled()` | Block
|
|
665
|
-
| `engine.block.isEffectEnabled()`
|
|
666
|
-
| `engine.block.findByType()`
|
|
573
|
+
| Method | Category | Purpose |
|
|
574
|
+
|--------|----------|---------|
|
|
575
|
+
| `engine.block.createEffect()` | Block | Create a new Recolor or Green Screen effect block |
|
|
576
|
+
| `engine.block.appendEffect()` | Block | Attach an effect to an image block |
|
|
577
|
+
| `engine.block.insertEffect()` | Block | Insert an effect at a specific position in the effect stack |
|
|
578
|
+
| `engine.block.removeEffect()` | Block | Remove an effect from a block by index |
|
|
579
|
+
| `engine.block.getEffects()` | Block | Get all effects attached to a block |
|
|
580
|
+
| `engine.block.supportsEffects()` | Block | Check if a block can render effects |
|
|
581
|
+
| `engine.block.setColor()` | Block | Set color properties on effect blocks |
|
|
582
|
+
| `engine.block.getColor()` | Block | Get color properties from effect blocks |
|
|
583
|
+
| `engine.block.setFloat()` | Block | Set numeric effect properties |
|
|
584
|
+
| `engine.block.getFloat()` | Block | Get numeric effect properties |
|
|
585
|
+
| `engine.block.setEffectEnabled()` | Block | Enable or disable an effect |
|
|
586
|
+
| `engine.block.isEffectEnabled()` | Block | Check if an effect is enabled |
|
|
587
|
+
| `engine.block.findByType()` | Block | Find all blocks of a specific type |
|
|
667
588
|
|
|
668
589
|
## Next Steps
|
|
669
590
|
|
|
670
|
-
- [Apply Filters and Effects](./filters-and-effects/apply.md) — Explore other visual effects available in CE.SDK
|
|
671
591
|
- [Export Designs](./export-save-publish/export.md) — Save your color-replaced images in various formats
|
|
672
592
|
|
|
593
|
+
|
|
594
|
+
|
|
673
595
|
---
|
|
674
596
|
|
|
675
597
|
## More Resources
|
|
676
598
|
|
|
677
|
-
- **[
|
|
599
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
678
600
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
679
|
-
- **[Web Documentation](./
|
|
680
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
601
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
602
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|