Přidání vodoznaku k obrázku
Přidání vodoznaku k obrázku
Tento dokument vysvětluje, jak přidat vodoznak k obrázku pomocí Aspose.PSD. Přidání vodoznaku k obrázku je běžný požadavek pro aplikace zpracovávající obrázky. Tento příklad používá třídu Graphics k vykreslení řetězce na povrch obrázku.
Přidání vodoznaku
K demonstraci operace načteme obrázek BMP z disku a pomocí metody DrawString třídy Graphics vykreslíme řetězec jako vodoznak na povrchu obrázku. Obrázek uložíme ve formátu PNG pomocí třídy PngOptions. Níže je ukázkový kód, který demonstruje, jak přidat vodoznak k obrázku. Zdrojový kód příkladu byl rozdělen do částí, aby byl snadno sledovatelný. Postupně příklady ukazují, jak:
- Načíst obrázek.
- Vytvořit a inicializovat objekt Graphics.
- Vytvořit a inicializovat objekty Font a SolidBrush.
- Vykreslit řetězec jako vodoznak pomocí metody DrawString třídy Graphics.
- Uložit obrázek ve formátu PNG.
Následující ukázka kódu vám ukazuje, jak přidat vodoznak k obrázku.
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()); | |
} |
Přidání diagonálního vodoznaku
Přidání diagonálního vodoznaku k obrázku je podobné přidání vodorovného vodoznaku, jak bylo diskutováno výše, s několika rozdíly. K demonstraci operace načteme obrázek JPG z disku, přidáme transformace pomocí objektu třídy Matrix a vykreslíme řetězec jako vodoznak na povrchu obrázku pomocí metody DrawString třídy Graphics. Níže je ukázkový kód, který demonstruje, jak přidat diagonální vodoznak k obrázku. Zdrojový kód příkladu byl rozdělen do částí, aby byl snadno sledovatelný. Postupně příklady ukazují, jak:
- Načíst obrázek.
- Vytvořit a inicializovat objekt Graphics.
- Vytvořit a inicializovat objekty Font a SolidBrush.
- Získat velikost obrázku v objektu SizeF.
- Vytvořit instanci třídy Matrix a provést složenou transformaci.
- Přiřadit transformaci objektu Graphics.
- Vytvořit a inicializovat objekt třídy StringFormat.
- Vykreslit řetězec jako vodoznak pomocí metody DrawString třídy Graphics.
- Uložit výsledný obrázek.
Následující ukázka kódu vám ukazuje, jak přidat diagonální vodoznak.
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()); | |
} |