Добавяне на Воден Знак към Изображение

Добавяне на Воден Знак към Изображение

Този документ обяснява как да добавите воден знак към изображение с помощта на 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());
}