Java images add watermark instance code sharing

  • 2020-04-01 04:34:38
  • OfStack

This article introduced the Java image to add watermark instance code, Java watermark is very convenient, watermark can be a picture 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 watermarking  
 * @blog http://sjsky.iteye.com 
 * @author Michael 
 */ 
public class ImageMarkLogoByIcon { 
 
  
 public static void main(String[] args) { 
  String srcImgPath = "d:/test/michael/myblog_01.png"; 
  String iconPath = "d:/test/michael/blog_logo.png"; 
  String targerPath = "d:/test/michael/img_mark_icon.jpg"; 
  String targerPath2 = "d:/test/michael/img_mark_icon_rotate.jpg"; 
  //Add a watermark to the image
  ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath); 
  //Add watermark to the picture, watermark rotation -45
  ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2, 
    -45); 
 
 } 
 
  
 public static void markImageByIcon(String iconPath, String srcImgPath, 
   String targerPath) { 
  markImageByIcon(iconPath, srcImgPath, targerPath, null); 
 } 
 
  
 public static void markImageByIcon(String iconPath, String srcImgPath, 
   String targerPath, 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(); 
 
   //Sets the jagged edge 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 watermark rotation
    g.rotate(Math.toRadians(degree), 
      (double) buffImg.getWidth() / 2, (double) buffImg 
        .getHeight() / 2); 
   } 
 
   //Watermark image path watermark is usually GIF or PNG, so you can set the transparency
   ImageIcon imgIcon = new ImageIcon(iconPath); 
 
   //I get the Image object.
   Image img = imgIcon.getImage(); 
 
   float alpha = 0.5f; //transparency
   g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 
     alpha)); 
 
   //Represents the position of the watermark image
   g.drawImage(img, 150, 300, null); 
 
   g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); 
 
   g.dispose(); 
 
   os = new FileOutputStream(targerPath); 
 
   //Generate images
   ImageIO.write(buffImg, "JPG", os); 
 
   System.out.println(" Picture added Icon Seal... "); 
  } catch (Exception e) { 
   e.printStackTrace(); 
  } finally { 
   try { 
    if (null != os) 
     os.close(); 
   } catch (Exception e) { 
    e.printStackTrace(); 
   } 
  } 
 } 
} 

Here's 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"); }
  */
 
 
 public final static void pressImage(String pressImg, String targetImg,
   int x, int y) {
  try {
   //The 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);
   //Watermark file The end of the 
   g.dispose();
   FileOutputStream out = new FileOutputStream(targetImg);
   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
   encoder.encode(image);
   out.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 
 
 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 this article is helpful for you to use the Java language to realize image watermarking.


Related articles: