Adicionar uma marca d'água a uma imagem

Adicionar uma marca d’água a uma imagem

Este documento explica como adicionar uma marca d’água a uma imagem usando o Aspose.PSD. Adicionar uma marca d’água a uma imagem é um requisito comum para aplicações de processamento de imagem. Este exemplo usa a classe Graphics para desenhar uma string na superfície da imagem.

Adicionar uma marca d’água

Para demonstrar a operação, iremos carregar uma imagem BMP do disco e desenhar uma string como marca d’água na superfície da imagem usando o método DrawString da classe Graphics. Vamos salvar a imagem no formato PNG usando a classe PngOptions. Abaixo está um exemplo de código que demonstra como adicionar uma marca d’água a uma imagem. O código de exemplo foi dividido em partes para facilitar o acompanhamento. Passo a passo, os exemplos mostram como:

  1. Carregar uma imagem.
  2. Criar e inicializar um objeto Graphics.
  3. Criar e inicializar objetos Font e SolidBrush.
  4. Desenhar uma string como marca d’água usando o método DrawString da classe Graphics.
  5. Salvar a imagem como PNG.

O trecho de código a seguir mostra como adicionar uma marca d’água na imagem.

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

Adicionar uma marca d’água diagonal

Adicionar uma marca d’água diagonal a uma imagem é semelhante à adição de uma marca d’água horizontal como discutido acima, com algumas diferenças. Para demonstrar a operação, iremos carregar uma imagem JPG do disco, adicionar transformações usando um objeto da classe Matrix e desenhar uma string como marca d’água na superfície da imagem usando o método DrawString da classe Graphics. Abaixo está um exemplo de código que demonstra como adicionar uma marca d’água diagonal a uma imagem. O código de exemplo foi dividido em partes para facilitar o acompanhamento. Passo a passo, os exemplos mostram como:

  1. Carregar uma imagem.
  2. Criar e inicializar um objeto Graphics.
  3. Criar e inicializar objetos Font e SolidBrush.
  4. Obter o tamanho da imagem em um objeto SizeF.
  5. Criar uma instância da classe Matrix e realizar uma transformação composta.
  6. Atribuir a transformação ao objeto Graphics.
  7. Criar e inicializar um objeto StringFormat.
  8. Desenhar uma string como marca d’água usando o método DrawString da classe Graphics.
  9. Salvar a imagem resultante.

O trecho de código a seguir mostra como adicionar uma marca d’água 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());
}