Dodawanie znaku wodnego do obrazu

Dodawanie znaku wodnego do obrazu

Ten dokument wyjaśnia, jak dodać znak wodny do obrazu za pomocą Aspose.PSD. Dodawanie znaku wodnego do obrazu jest częstym wymaganiem dla aplikacji przetwarzania obrazów. Ten przykład wykorzystuje klasę Graphics do rysowania ciągu znaków na powierzchni obrazu.

Dodawanie znaku wodnego

Aby zilustrować operację, wczytamy obraz BMP z dysku i narysujemy ciąg znaków jako znak wodny na powierzchni obrazu za pomocą metody DrawString klasy Graphics. Zapiszemy obraz w formacie PNG za pomocą klasy PngOptions. Poniżej znajduje się przykładowy kod demonstrujący, jak dodać znak wodny do obrazu. Kod źródłowy został podzielony na części, aby ułatwić śledzenie. Krok po kroku przykłady pokazują, jak:

  1. Wczytać obraz.
  2. Utwórz i zainicjuj obiekt Graphics.
  3. Utwórz i zainicjuj obiekt Font oraz SolidBrush.
  4. Narysuj ciąg znaków jako znak wodny za pomocą metody DrawString klasy Graphics.
  5. Zapisz obraz w formacie PNG.

Poniższy fragment kodu pokazuje, jak dodać znak wodny do obrazu.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
// Create graphics object to perform draw operations.
Graphics graphics = new Graphics(psdImage);
// Create font to draw watermark with.
Font font = new Font("Arial", 20.0f);
// Create a solid brush with color alpha set near to 0 to use watermarking effect.
using (SolidBrush brush = new SolidBrush(Color.FromArgb(50, 128, 128, 128)))
{
// Specify string alignment to put watermark at the image center.
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
// Draw watermark using font, partly-transparent brush and rotation matrix at the image center.
graphics.DrawString("Some watermark text", font, brush, new RectangleF(0, 0, psdImage.Width, psdImage.Height), sf);
}
// Export the image into PNG file format.
psdImage.Save(dataDir + "AddWatermark_output.png", new PngOptions());
}

Dodawanie przekątnego znaku wodnego

Dodanie przekątnego znaku wodnego do obrazu jest podobne do dodawania poziomego znaku wodnego, o którym dyskutowaliśmy powyżej, z kilkoma różnicami. Aby zilustrować operację, wczytamy obraz JPG z dysku, dodamy transformacje za pomocą obiektu klasy Matrix i narysujemy ciąg znaków jako znak wodny na powierzchni obrazu za pomocą metody DrawString klasy Graphics. Poniżej znajduje się przykładowy kod demonstrujący, jak dodać przekątny znak wodny do obrazu. Kod źródłowy został podzielony na części, aby ułatwić śledzenie. Krok po kroku przykłady pokazują, jak:

  1. Wczytać obraz.
  2. Utwórz i zainicjuj obiekt Graphics.
  3. Utwórz i zainicjuj obiekty Font oraz SolidBrush.
  4. Pobierz rozmiar obrazu w obiekcie SizeF.
  5. Utwórz instancję klasy Matrix i wykonaj transformację składaną.
  6. Przypisz transformację do obiektu Graphics.
  7. Utwórz i zainicjuj obiekt StringFormat.
  8. Narysuj ciąg znaków jako znak wodny za pomocą metody DrawString klasy Graphics.
  9. Zapisz obraz wynikowy.

Poniższy fragment kodu pokazuje, jak dodać przekątny znak wodny.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
// Create graphics object to perform draw operations.
Graphics graphics = new Graphics(psdImage);
// Create font to draw watermark with.
Font font = new Font("Arial", 20.0f);
// Create a solid brush with color alpha set near to 0 to use watermarking effect.
using (SolidBrush brush = new SolidBrush(Color.FromArgb(50, 128, 128, 128)))
{
// specify transform matrix to rotate watermark.
graphics.Transform = new Matrix();
graphics.Transform.RotateAt(45, new PointF(psdImage.Width / 2, psdImage.Height / 2));
// Specify string alignment to put watermark at the image center.
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
// Draw watermark using font, partly-transparent brush at the image center.
graphics.DrawString("Some watermark text", font, brush, new RectangleF(0, psdImage.Height / 2, psdImage.Width, psdImage.Height / 2), sf);
}
// Export the image into PNG file format.
psdImage.Save(dataDir + "AddDiagnolWatermark_output.png", new PngOptions());
}