This article introduces the example code for adding watermarks to Java pictures. It is very convenient to implement watermarks in Java. The watermark can be pictures or text. The specific content is as follows
package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageDecoder; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * Image watermark* @blog http://sjsky.iteye.com * @author Michael */ public class ImageMarkLogoByIcon { /** * @param args */ public static void main(String[] args) { String srcImgPath = "d:/test/michael/myblog_01.png"; String iconPath = "d:/test/michael/blog_logo.png"; String targetPath = "d:/test/michael/img_mark_icon.jpg"; String targetPath2 = "d:/test/michael/img_mark_icon_rotate.jpg"; // Add watermark to the image ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targetPath); // Add watermark to the image, watermark rotation-45 ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targetPath2, -45); } /** * Add a watermark to the image* @param iconPath Watermark image path* @param srcImgPath Source image path* @param targetPath Target image path*/ public static void markImageByIcon(String iconPath, String srcImgPath, String targetPath) { markImageByIcon(iconPath, srcImgPath, targetPath, null); } /** * Add a watermark to the image and set the rotation angle of the watermark image* @param iconPath Watermark image path* @param srcImgPath Source image path* @param targetPath Target image path* @param degree Watermark image rotation angle*/ public static void markImageByIcon(String iconPath, String srcImgPath, String targetPath, Integer degree) { OutputStream os = null; try { Image srcImg = ImageIO.read(new File(srcImgPath)); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null), srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); // Get the brush object// Graphics g= buffImg.getGraphics(); Graphics2D g = buffImg.createGraphics(); // Set the jagged edge processing of the line segment g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg .getHeight(null), Image.SCALE_SMOOTH), 0, 0, null); if (null != degree) { // Set the watermark rotation g.rotate(Math.toRadians(degree), (double) buffImg.getWidth() / 2, (double) buffImg .getHeight() / 2); } // The path of the watermark image is generally gif or png, so that the transparency can be set ImageIcon imgIcon = new ImageIcon(iconPath); // Get the Image object. Image img = imgIcon.getImage(); float alpha = 0.5f; // Transparency g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // Indicates the location of the watermark image g.drawImage(img, 150, 300, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(targerPath); // Generate image ImageIO.write(buffImg, "JPG", os); System.out.println("Image finished adding Icon seal..."); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } } }Let me share with you another example:
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGImageEncoder; public final class ImageUtils { public ImageUtils() { } /** * public final static String getPressImgPath() { return ApplicationContext * .getRealPath("/template/data/util/shuiyin.gif"); } */ /** * Print the image on the image* * @param pressImg -- * Watermark file* @param targetImg -- * Target file* @param x * --x coordinates* @param y * --y coordinates*/ public final static void pressImage(String pressImg, String targetImg, int x, int y) { try { //Target file File _file = new File(targetImg); Image src = ImageIO.read(_file); int wideth = src.getWidth(null); int height = src.getHeight(null); BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawImage(src, 0, 0, wideth, height, null); //Watermark file File _filebiao = new File(pressImg); Image src_biao = ImageIO.read(_filebiao); int wideth_biao = src_biao.getWidth(null); int height_biao = src_biao.getHeight(null); g.drawImage(src_biao, (wideth - wideth_biao) / 2, (height - height_biao) / 2, wideth_biao, height_biao, null); // End of watermark file g.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * Print text watermark image* * @param pressText * --text* @param targetImg -- * Target image* @param fontName -- * Font name* @param fontStyle -- * Font style* @param color -- * Font color* @param fontSize -- * Font size* @param x -- * Offset* @param y */ public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, int color, int fontSize, int x, int y) { try { File _file = new File(targetImg); Image src = ImageIO.read(_file); int wideth = src.getWidth(null); int height = src.getHeight(null); BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawImage(src, 0, 0, wideth, height, null); g.setColor(Color.RED); g.setFont(new Font(fontName, fontStyle, fontSize)); g.drawString(pressText, wideth - fontSize - x, height - fontSize / 2 - y); g.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); } catch (Exception e) { System.out.println(e); } } public static void main(String[] args) { pressImage("F:/logo.png", "F:/123.jpg", 0, 0); }}I hope that this article will be helpful for everyone to use Java language to add watermarks to images.