Úprava rámových mask v rastru v souboru PSD pomocí API
Přehled
K automatizaci úprav formátu PSD a změny souboru PSD bez programu Adobe® Photoshop® můžete použít níže uvedené API Aspose.PSD. Jsou zde k dispozici ukázky kódu C# a .NET, které vám mohou pomoci upravit soubory PSD.
Použitím rámových a vektorových masek PSD můžeme skrýt a zobrazit pixely vrstvy bez jejich trvalého smazání. Rastrické masky jsou též nazývány maskou vrstvy nebo uživatelskou maskou. Přístup jak k rastrickým, tak k vektorovým maskám v Aspose.PSD je poskytován prostřednictvím vlastnosti vrstvy LayerMaskData, která může být instancí tříd ‘LayerMaskDataShort’ a ‘LayerMaskDataFull’, které jsou potomky abstraktní třídy ‘LayerMaskData’. Pokud má vrstva jak rastrické, tak vektorové masky, pak je poskytována instance třídy LayerMaskDataFull . Pokud vrstva obsahuje pouze rastrickou nebo vektorovou masku, pak je poskytnuta instance třídy LayerMaskDataShort . Pokud je vlastnost LayerMaskData null, pak vrstva nemá žádné masky nebo pouze vypnutou vektorovou masku.
Rastrická maska a vypnutá vektorová maska LayerMaskDataShort Vypnutá rastrická maska LayerMaskDataShort Rastrická maska a vektorová maska LayerMaskDataFull Rastrická maska LayerMaskDataShort Vektorová maska LayerMaskDataShort Vypnutá vektorová maska null (Ale zdroj vektoru je přítomen) |
---|
Jak získat rástrovou masku vrstvy v souboru PSD?
Nejdříve bychom měli zjistit, zda má vrstva jak vektorové, tak vrstvové masky:
Níže uvedený ukázkový kód ukazuje, jak získat rástrovou masku vrstvy
V opačném případě je typ vlastnosti vrstvy LayerMaskData LayerMaskDataShort. V tomto případě zkontrolujeme, zda má vrstva pouze rastrickou masku kontrolou vlastnosti Flags. Neměla by obsahovat LayerMaskFlags.UserMaskFromRenderingOtherData vlajku, jinak je maska vektorová cache**.**
Získání úryvku kódu masky:
Pokud potřebujete extrahovat rástrovou masku jako LayerMaskDataShort (pro další manipulace) dokonce tehdy, když jsou přítomny obě masky, mělo by být extrahováno LayerMaskDataFull a převedeno na LayerMaskDataShort. Na oba případy může být použit následující kód:
Extrahování rástrové masky ze souboru PSD
Jak zjistit, zda má vrstva v souboru PSD rástrovou masku?
Následující kód v jazyce C# vám může pomoci zjistit, zda má vrstva rástrovou masku:
Jak zjistit, zda je na vrstvu PSD aplikována rastrická maska [/psd/net/psd-layer/]
Jak odebrat / přidat / aktualizovat rástrovou masku vrstvy v souboru PSD?
Pouhé odebrání / přidání / aktualizace LayerMaskData není dostatečné pro správné uložení, protože se neaktualizují kanály; i když to může poskytnout správné vykreslování. To nemění kanály masky:
Měli bychom použít metodu AddLayerMask vrstvy pro odstranění / přidání / aktualizaci.
Tímto přidáváme/aktualizujeme jak masku, tak kanály:
Tímto odstraníme jak masku, tak kanály:
Odebrání rástrové masky vrstvy v obrázku PSD
Nejprve zkontrolujeme, zda je maska ve zkráceném formátu a pokud to není vektorová maska, můžeme jednoduše zavolat metodu AddLayerMask s hodnotou null pro smazání rastrické masky. Pokud je v plném formátu, musíme ji převést na zkrácený formát a ponechat pouze vektorovou masku. Pro odstranění masky vrstvy lze použít následující ukázkový kód v jazyce C# .NET:
Ukázkový kód, jak odstranit vrstvovou masku ze souboru PSD.
Aktualizace rástrové masky vrstvy v obraze PSD
To je přímočaré: pokud je maska ve zkráceném formátu, musíme změnit ImageData a MaskRectangle pokud je to nutné, jinak UserMaskData a UserMaskRectangle by měly být změněny. Pro aktualizaci masky vrstvy lze použít následující ukázkový kód v jazyce C# .NET:
Aktualizace masky vrstvy PSD s C#
Zde je příklad možných akcí, které změní rástrovou masku. Tento invertuje masku uživatele vrstvy:
Aktualizace masky vrstvy PSD s C#
Aktualizace vektorové masky ve souboru PSD, když je přítomna rástrová maska vrstvy
Předpokládá se, že uživatel již změnil zdrojovou cestu vektoru. Poté může aktualizovat vektorovou masku jednoduše zavoláním metody AddLayerMask vrstvy:
Aktualizace vektorové masky vrstvy PSD s C#
Přidání rastrické masky vrstvy v souboru PSD
Pokud vrstva nemá žádnou masku, můžeme přidat zadanou rástrovou masku jednoduše zavoláním metody AddLayerMask vrstvy.
Pokud maska nemá vlajku UserMaskFromRenderingOtherData** , pak již obsahuje rastrickou masku a musíme ji aktualizovat, jak je popsáno výše. Jinak, pokud je tato maska ve zkráceném formátu, převedeme ji na plný formát. Pokud ne, použijeme ji tak, jak je. Poté aktualizovat UserMaskData, UserMaskRectangle a další vlastnosti s danými vlastnostmi masky. Pro přidání (aktualizaci) masky vrstvy lze použít následující ukázkový kód v jazyce C# .NET:
Přidání nové masky vrstvy do souboru PSD
Jak zjistit, zda je vrstvová maska povolena?
Pro zjištění stavu povolení vrstvové rástrové masky můžeme zkontrolovat stav vlajky LayerMaskFlags.Disabled ve vlastnosti Flags pro LayerMaskDataShort nebo v poli RealFlags pro LayerMaskDataFull. Pro získání stavu povolení masky vrstvy lze použít následující ukázkový kód v jazyce C# .NET:
Zkontrolovat, zda je maska aktivní:
Jak povolit nebo zakázat rástrovou masku vrstvy?
Pro povolení nebo zakázání rástrové masky vrstvy můžeme změnit stav vlajky LayerMaskFlags.Disabled ve vlastnosti Flags pro LayerMaskDataShort nebo v poli RealFlags pro LayerMaskDataFull. Pro změnu stavu povolení masky vrstvy lze použít následující ukázkový kód v jazyce C# .NET:
Povolit nebo zakázat rastrickou masku vrstvy: