336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
java로 구현한 watermark 샘플코드
package org.watermark;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class WaterMarkUtil3 {
public static void main(String[] args) {
String strWText = "ABCDABCDABCDABCDABCDABCDABCD";
// create graphics context and enable anti-aliasing
try {
File sourceImageFile = new File("d:/test.jpg");
File destImageFile = new File("d:/testwater01.jpg");
BufferedImage sourceImage = ImageIO.read(sourceImageFile);
Graphics2D g2d = (Graphics2D) sourceImage.getGraphics();
//Graphics2D g2d = original.createGraphics();
g2d.scale(1, 1);
g2d.addRenderingHints(
new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON));
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
// create watermark text shape for rendering
Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 18);
GlyphVector fontGV = font.createGlyphVector(g2d.getFontRenderContext(), strWText);
Rectangle size = fontGV.getPixelBounds(g2d.getFontRenderContext(), 0, 0);
Shape textShape = fontGV.getOutline();
//double textWidth = size.getWidth();
double textWidth = size.getWidth();
//double textHeight = size.getHeight();
double textHeight = size.getHeight()*3; // 텍스트 간격이다.
//AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 4d);
AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 5d);
Shape rotatedText = rotate45.createTransformedShape(textShape);
// use a gradient that repeats 4 times
g2d.setPaint(new GradientPaint(0, 0,
new Color(0f, 0f, 0f, 0.1f),
sourceImage.getWidth() / 2, sourceImage.getHeight() / 2,
new Color(0f, 0f, 0f, 0.1f)));
//new Color(1f, 1f, 1f, 0.1f)));
//g2d.setStroke(new BasicStroke(0.5f));
g2d.setStroke(new BasicStroke(1f));
// step in y direction is calc'ed using pythagoras + 5 pixel padding
//double yStep = Math.sqrt(textWidth * textWidth / 2) + 2;
double yStep = Math.sqrt(textWidth * textWidth / 2); //
System.out.println("yStep : " + yStep);
// step over image rendering watermark text
//for (double x = -textHeight * 3; x < sourceImage.getWidth(); x += (textHeight * 3)) {
for (double x = -textHeight; x < sourceImage.getWidth()/2; x += textHeight) {
double y = -yStep;
for (; y < sourceImage.getHeight(); y += yStep) {
g2d.draw(rotatedText);
g2d.fill(rotatedText);
g2d.translate(0, yStep);
}
g2d.translate(textHeight * 3, -(y + yStep));
}
ImageIO.write(sourceImage, "jpg", destImageFile);
g2d.dispose();
System.out.println("The tex watermark is added to the image.");
} catch (IOException ex) {
System.err.println(ex);
}
}
}
샘플로 제작된 이미지