Z tego artykułu dowiesz się, jak dynamicznie wyszukiwać warstwy i aktualizować tekst lub obraz warstwy w plikach PSD programu Photoshop przy użyciu języka C# .NET.
PSD to domyślny format używany przez program Adobe Photoshop do zapisywania dokumentów w strukturze wielowarstwowej, w której każda warstwa zawiera tekst, obrazy, obiekty graficzne i inne obsługiwane elementy. Może się zdarzyć, że masz szablon PSD i musisz utworzyć kilka wynikowych obrazów, wypełniając warstwy tekstu i obrazu w szablonie. Przykładem takiego scenariusza jest tworzenie kart pracowniczych w organizacji. Aby zautomatyzować ten proces, pokażę Ci, jak:
- znajdź i zaktualizuj warstwy tekstowe w plikach PSD za pomocą C#
- znajdź i zaktualizuj warstwy obrazu w plikach PSD za pomocą C#
Biblioteka C# do znajdowania i aktualizowania warstw PSD
Aspose.PSD for .NET umożliwia tworzenie i modyfikowanie plików PSD bez instalowania Adobe Photoshop lub Illustrator. Interfejs API może być przydatny w scenariuszu, w którym trzeba dynamicznie aktualizować warstwy PSD przy użyciu języka C# lub VB.NET. Interfejs API można zainstalować za pomocą Menedżera pakietów NuGet lub ręcznie pobrać i odwołać się do jego bibliotek DLL.
Znajdź i zaktualizuj warstwy tekstowe w plikach PSD za pomocą C#
Aspose.PSD for .NET pozwala znaleźć żądaną warstwę w plikach PSD za pomocą nazwy warstwy. Po znalezieniu warstwy możesz zaktualizować jej zawartość. Poniżej przedstawiono kroki, aby znaleźć i zaktualizować warstwę tekstową w pliku PSD.
- Utwórz instancję klasy PsdImage i zainicjuj ją ścieżką pliku PSD.
- Uzyskaj dostęp do warstw w pliku PSD za pomocą właściwości PsdImage.Layers.
- Dopasuj wyświetlaną nazwę każdej warstwy, aby uzyskać żądaną warstwę w obiekcie TextLayer.
- Zaktualizuj tekst za pomocą metody TextLayer.UpdateText(String).
- Zapisz zaktualizowany obraz przy użyciu metody PsdImage.Save(String).
Poniższy przykładowy kod pokazuje, jak znaleźć i zaktualizować warstwę tekstową w pliku PSD przy użyciu języka C#.
// Załaduj plik PSD
using (PsdImage image = (PsdImage)Image.Load(@"template.psd"))
{
// Znajdź warstwę, używając nazwy warstwy
var layerToUpdateText = (TextLayer)FindLayer("Name", image);
// Prosty sposób na aktualizację tekstu
layerToUpdateText.UpdateText("John Doe");
// Zapisz zaktualizowany plik PSD
image.Save("updated-psd.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Uzyskaj warstwy aa w pliku PSD
var layers = image.Layers;
// Znajdź żądaną warstwę
foreach (var layer in layers)
{
// Dopasuj nazwę warstwy
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
Poniżej znajduje się zrzut ekranu wejściowego pliku PSD, którego użyliśmy w tym przykładzie:
Poniżej znajduje się wynikowy plik PSD ze zaktualizowaną warstwą tekstową:
Znajdź i zaktualizuj warstwy obrazu w plikach PSD za pomocą C#
Aby poradzić sobie z obiektami graficznymi, takimi jak obrazy, Aspose.PSD for .NET udostępnia klasę Graphics. Ta klasa służy do czyszczenia lub rysowania grafiki w warstwach PSD. Poniżej przedstawiono kroki, aby znaleźć warstwę PSD i zaktualizować jej obraz.
- Utwórz obiekt klasy PsdImage, aby załadować plik PSD.
- Znajdź warstwę w pliku PSD z obiektu PsdImage.Layers.
- Załaduj obraz, który chcesz narysować, na warstwie w obiekcie Stream.
- Utwórz nowy obiekt Layer i zainicjuj go obiektem Stream utworzonym w poprzednim kroku.
- Utwórz instancję klasy Graphics i zainicjuj ją warstwą, która ma zostać zastąpiona.
- Wyczyść warstwę metodą Graphics.Clear().
- Narysuj obraz w warstwie metodą Graphics.DrawImage(Image, Rectangle).
- Zapisz plik metodą PsdImage.Save(String).
Poniższy przykładowy kod pokazuje, jak znaleźć i zaktualizować warstwy obrazu w pliku PSD przy użyciu języka C#.
// Załaduj plik PSD
using (PsdImage image = (PsdImage)Image.Load(@"updated-psd.psd"))
{
// Znajdźmy warstwę, którą chcemy zastąpić
var layerToReplace = FindLayer("ProfilePicture", image);
using (Stream stream = new FileStream(@"avatar.png", FileMode.Open))
{
var newLayer = new Layer(stream);
// Rysowanie nowej warstwy na starej
var graphic = new Graphics(layerToReplace);
graphic.Clear(Color.Empty);
graphic.DrawImage(newLayer, new Rectangle(new Point(), new Size(layerToReplace.Width, layerToReplace.Height)));
}
// Zapisz zaktualizowany plik PSD
image.Save("updated-psd2.psd");
}
//-------------------FindLayer()-------------
public static Layer FindLayer(string layerName, PsdImage image)
{
// Uzyskaj warstwy aa w pliku PSD
var layers = image.Layers;
// Znajdź żądaną warstwę
foreach (var layer in layers)
{
// Dopasuj nazwę warstwy
if (string.Equals(layer.DisplayName, layerName, StringComparison.InvariantCultureIgnoreCase))
{
return layer;
}
}
return null;
}
Poniżej znajduje się zrzut ekranu pliku PSD po zaktualizowaniu warstwy obrazu za pomocą wyżej wymienionego kodu:
Wniosek
W tym artykule zobaczyliśmy, jak znaleźć i zaktualizować warstwy w pliku programu Photoshop (PSD) przy użyciu języka C#. Przewodnik krok po kroku i przykłady kodu pokazują, jak znaleźć warstwy i zaktualizować ich tekst lub obraz w plikach Photoshop PSD. Możesz dowiedzieć się więcej o Aspose.PSD for .NET, korzystając z dokumentacji.