Добавление водяного знака на изображение

Добавление водяного знака на изображение

Этот документ объясняет, как добавить водяной знак на изображение с использованием Aspose.PSD. Добавление водяного знака на изображение является общим требованием для приложений обработки изображений. В этом примере используется класс Graphics для рисования строки на поверхности изображения.

Добавление водяного знака

Чтобы продемонстрировать операцию, мы загрузим изображение BMP с диска и нарисуем строку в качестве водяного знака на поверхности изображения, используя метод DrawString класса Graphics. Мы сохраним изображение в формате PNG с использованием класса PngOptions. Ниже приведен пример кода, демонстрирующий, как добавить водяной знак на изображение. Исходный код примера разделен на части для удобства отслеживания. Шаг за шагом примеры показывают, как:

  1. Загрузить изображение.
  2. Создать и инициализировать объект Graphics.
  3. Создать и инициализировать объекты Font и SolidBrush.
  4. Нарисовать строку в качестве водяного знака с помощью метода DrawString класса Graphics.
  5. Сохранить изображение в формате PNG.

В следующем фрагменте кода показано, как добавить водяной знак на изображение.

String dataDir = Utils.getDataDir(AddWatermark.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (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.
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.setAlignment(StringAlignment.Center);
sf.setLineAlignment(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.getWidth(), psdImage.getHeight()), sf);
// Export the image into PNG file format.
psdImage.save(dataDir + "AddWatermark_output.png", new PngOptions());
}

Добавление диагонального водяного знака

Добавление диагонального водяного знака на изображение аналогично добавлению горизонтального водяного знака, описанному выше, с некоторыми отличиями. Чтобы продемонстрировать операцию, мы загрузим изображение JPG с диска, добавим преобразования с использованием объекта класса Matrix и нарисуем строку в качестве водяного знака на поверхности изображения с использованием метода DrawString класса Graphics. Ниже приведен пример кода, демонстрирующий, как добавить диагональный водяной знак на изображение. Исходный код примера разделен на части для удобства отслеживания. Шаг за шагом примеры показывают, как:

  1. Загрузить изображение.
  2. Создать и инициализировать объект Graphics.
  3. Создать и инициализировать объекты Font и SolidBrush.
  4. Получить размер изображения в объекте SizeF.
  5. Создать экземпляр класса Matrix и выполнить композитное преобразование.
  6. Назначить преобразование объекту Graphics.
  7. Создать и инициализировать объект StringFormat.
  8. Нарисовать строку в качестве водяного знака с использованием метода DrawString класса Graphics.
  9. Сохранить результирующее изображение.

В следующем фрагменте кода показано, как добавить диагональный водяной знак.

String dataDir = Utils.getDataDir(AddDiagnolWatermark.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (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.
SolidBrush brush = new SolidBrush(Color.fromArgb(50, 128, 128, 128));
// specify transform matrix to rotate watermark.
graphics.setTransform(new Matrix());
graphics.getTransform().rotateAt(45, new PointF(psdImage.getWidth() / 2, psdImage.getHeight() / 2));
// Specify string alignment to put watermark at the image center.
StringFormat sf = new StringFormat();
sf.setAlignment(StringAlignment.Center);
// Draw watermark using font, partly-transparent brush at the image center.
graphics.drawString("Some watermark text", font, brush, new RectangleF(0, psdImage.getHeight() / 2, psdImage.getWidth(), psdImage.getHeight() / 2), sf);
// Export the image into PNG file format.
psdImage.save(dataDir + "AddDiagnolWatermark_output.png", new PngOptions());
}