Agregar una marca de agua a una imagen

Agregar una marca de agua a una imagen

Este documento explica cómo agregar una marca de agua a una imagen utilizando Aspose.PSD. Agregar una marca de agua a una imagen es un requisito común en aplicaciones de procesamiento de imágenes. Este ejemplo utiliza la clase Graphics para dibujar una cadena en la superficie de la imagen.

Agregando una marca de agua

Para demostrar la operación, cargaremos una imagen BMP desde el disco y dibujaremos una cadena como marca de agua en la superficie de la imagen utilizando el método DrawString de la clase Graphics. Guardaremos la imagen en formato PNG utilizando la clase PngOptions. A continuación se muestra un ejemplo de código que demuestra cómo agregar una marca de agua a una imagen. El código de ejemplo se ha dividido en partes para que sea fácil de seguir. Paso a paso, los ejemplos muestran cómo:

  1. Cargar una imagen.
  2. Crear e inicializar un objeto Graphics.
  3. Crear e inicializar objetos Font y SolidBrush.
  4. Dibujar una cadena como marca de agua utilizando el método DrawString de la clase Graphics.
  5. Guardar la imagen en formato PNG.

El siguiente fragmento de código le muestra cómo agregar una marca de agua a la imagen.

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());
}

Agregando una marca de agua diagonal

Agregar una marca de agua diagonal a una imagen es similar a agregar una marca de agua horizontal como se discutió anteriormente, con algunas diferencias. Para demostrar la operación, cargaremos una imagen JPG desde el disco, añadiremos transformaciones utilizando un objeto de la clase Matrix y dibujaremos una cadena como marca de agua en la superficie de la imagen utilizando el método DrawString de la clase Graphics. A continuación se muestra un ejemplo de código que demuestra cómo agregar una marca de agua diagonal a una imagen. El código de ejemplo se ha dividido en partes para que sea fácil de seguir. Paso a paso, los ejemplos muestran cómo:

  1. Cargar una imagen.
  2. Crear e inicializar un objeto Graphics.
  3. Crear e inicializar objetos Font y SolidBrush.
  4. Obtener el tamaño de la imagen en un objeto SizeF.
  5. Crear una instancia de la clase Matrix y realizar una transformación compuesta.
  6. Asignar la transformación al objeto Graphics.
  7. Crear e inicializar un objeto StringFormat.
  8. Dibujar una cadena como marca de agua utilizando el método DrawString de la clase Graphics.
  9. Guardar la imagen resultante.

El siguiente fragmento de código le muestra cómo agregar una marca de agua diagonal.

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());
}