Edycja masek warstw rastrowych w pliku PSD za pomocą interfejsu API
Przegląd
Aby zautomatyzować edycję formatu PSD i zmienić plik PSD bez konieczności korzystania z Adobe® Photoshop®, można skorzystać z poniższego interfejsu API Aspose.PSD. Dostępne są fragmenty kodu w językach C# i .NET, które pomogą w modyfikacji plików PSD.
Korzystając z masek warstwowych i wektorowych PSD, jesteśmy w stanie ukrywać i pokazywać piksele warstwy bez ich trwałego usuwania. Maska rastrowa jest również nazywana maską warstwową lub maską użytkownika. Dostęp do obu masek rastrowych i wektorowych w Aspose.PSD jest zapewniony poprzez właściwość warstwy LayerMaskData , która może być instancją klas ‘LayerMaskDataShort’ oraz ‘LayerMaskDataFull’, które są klasami podrzędnymi klasy abstrakcyjnej ‘LayerMaskData’. Jeśli warstwa posiada zarówno maski rastrowe, jak i wektorowe, dostarczana jest instancja LayerMaskDataFull . Jeśli warstwa ma jedynie maskę rastrową lub wektorową, dostarczana jest instancja LayerMaskDataShort . Jeśli właściwość LayerMaskData ma wartość null, oznacza to, że warstwa nie posiada masek lub ma jedynie dezaktywowaną maskę wektorową.
||
Maska rastrowa i dezaktywowana maska wektorowa - LayerMaskDataShort
Dezaktywowana maska rastrowa LayerMaskDataShort
Maska rastrowa i maska wektorowa LayerMaskDataFull
Maska rastrowa LayerMaskDataShort
Maska wektorowa LayerMaskDataShort
Dezaktywowana maska wektorowa null (Ale zasób wektorowy jest obecny)
|Jak uzyskać maskę rastrową warstwy w pliku PSD?
Na początku powinniśmy sprawdzić, czy warstwa posiada zarówno maski wektorowe, jak i warstwowe:
Poniżej znajduje się przykładowy kod demonstrujący, jak uzyskać maskę rastrową warstwy
W przeciwnym razie, jeśli typ właściwości warstwy LayerMaskData to LayerMaskDataShort, wówczas sprawdzamy, czy warstwa ma jedynie maskę rastrową, sprawdzając właściwość Flags. Nie powinien on zawierać flagi LayerMaskFlags.UserMaskFromRenderingOtherData, w przeciwnym razie maska jest buforem maski wektorowej**.**
Fragment kodu uzyskiwania maski:
Jeśli konieczne jest wyodrębnienie maski rastrowej jako LayerMaskDataShort (do dalszych manipulacji) nawet gdy obydwie maski są obecne, należy wyodrębnić LayerMaskDataFull i przekształcić go na LayerMaskDataShort. Poniższy kod może być użyty w obydwu przypadkach:
Wyodrębnienie maski rastrowej z pliku PSD
Jak sprawdzić, czy warstwa w pliku PSD posiada maskę rastrową?
Poniższy kod w języku C# może pomóc Ci sprawdzić, czy warstwa ma maskę rastrową:
Jak sprawdzić, czy maska rastrowa została zastosowana do warstwy PSD
Jak usunąć / dodać / zaktualizować maskę rastrową warstwy w pliku PSD?
Tylko usunięcie / dodanie / aktualizacja LayerMaskData nie jest wystarczające do poprawnego zapisywania, ponieważ kanały nie są aktualizowane. Chociaż może to zapewnić poprawne renderowanie. To nie zmienia kanałów maski:
Powinniśmy użyć metody AddLayerMask warstwy do usuwania / dodawania / aktualizowania.
Ta metoda dodaje/aktualizuje zarówno maskę, jak i kanały:
Ta metoda usuwa zarówno maskę, jak i kanały:
Usuwanie maski rastrowej warstwy obrazu PSD
Najpierw sprawdzamy, czy maska jest w formacie krótkim, a jeśli nie jest wektorową, możemy po prostu wywołać metodę AddLayerMask z wartością null, aby usunąć maskę rastrową. Ale jeśli jest w formacie pełnym, musimy przekształcić go na krótki format, pozostawiając tylko maskę wektorową. Do usunięcia maski warstwy można użyć tego kodu w języku C# .NET:
Fragment kodu, jak usunąć warstwę maski z pliku PSD.
Aktualizacja maski rastrowej warstwy obrazu PSD
Jest to proste: jeżeli maska jest w formacie krótkim, musimy zmienić ImageData i MaskRectangle, jeśli jest to konieczne, w przeciwnym razie należy zmienić UserMaskData oraz UserMaskRectangle. Poniższy kod w języku C# .NET może być użyty do aktualizacji maski warstwy:
Aktualizacja maski warstwy PSD za pomocą C#
Poniżej znajduje się przykład możliwych działań, które zmieniają maskę rastrową. Ten przykład odwraca maskę użytkownika warstwy:
Aktualizacja maski warstwy PSD za pomocą C#
Aktualizacja maski wektorowej w pliku PSD, gdy obecna jest maska rastrowa warstwy
Zakłada się, że użytkownik już zmienił zasób ścieżki wektorowej. Następnie można zaktualizować maskę wektorową, po prostu wywołując metodę AddLayerMask warstwy:
Aktualizacja Maski Wektorowej Warstwy PSD za pomocą C#
Dodanie maski rastrowej warstwy w pliku PSD
Jeśli warstwa nie posiada maski, można dodać odpowiednią maskę rastrową, po prostu wywołując metodę warstwy AddLayerMask.
Jeżeli maska nie posiada flagi UserMaskFromRenderingOtherData** , oznacza to, że już posiada maskę rastrową i należy ją zaktualizować, jak opisano powyżej. W przeciwnym razie, jeżeli maska