Java 制作图片水印

    技术2022-05-20  61

    package org.zj.util;

    import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;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 class WaterMark {  public static int MARK_POSITION_LEFT_UP = 0; public static int MARK_POSITION_RIGHT_UP = 1; public static int MARK_POSITION_LEFT_DOWN = 2; public static int MARK_POSITION_RIGHT_DOWN = 3;        public final static void pressImage(String pressImg, String targetImg, int x, int y, float alpha) {          try {              File img = new File(targetImg);              Image src = ImageIO.read(img);              int wideth = src.getWidth(null);              int height = src.getHeight(null);              BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);              Graphics2D g = image.createGraphics();              g.drawImage(src, 0, 0, wideth, height, null);              //水印文件              Image src_biao = ImageIO.read(new File(pressImg));              int wideth_biao = src_biao.getWidth(null);              int height_biao = src_biao.getHeight(null);              g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));                       //左下角距离边距10像素            int leftDownWideth = 10;            int leftDownHeight = (height - height_biao) - 10;                       //右下角距离边距10像素            int rightDownWideth = (wideth - wideth_biao) - 10;            int rightDownHeight = (height - height_biao) - 10;                       //左上角距离边距10像素            int leftUpWideth = 10;            int leftUpHeight = 10;                       //右上角距离边距10像素            int rightUpWideth = (wideth - wideth_biao) - 10;            int rightUpHeight = 10;                       //水印位置            g.drawImage(src_biao, x, y , wideth_biao, height_biao, null);                                    //水印文件结束              g.dispose();              ImageIO.write((BufferedImage) image, "jpg", img);          } catch (Exception e) {              e.printStackTrace();          }      }                 public final static void pressImage(String pressImg, String targetImg, int position, float alpha) {       try {        File img = new File(targetImg);        Image src = ImageIO.read(img);        int wideth = src.getWidth(null);        int height = src.getHeight(null);        BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);        Graphics2D g = image.createGraphics();        g.drawImage(src, 0, 0, wideth, height, null);        //水印文件        Image src_biao = ImageIO.read(new File(pressImg));        int wideth_biao = src_biao.getWidth(null);        int height_biao = src_biao.getHeight(null);        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));            //左下角距离边距10像素      int leftDownWideth = 10;      int leftDownHeight = (height - height_biao) - 10;            //右下角距离边距10像素      int rightDownWideth = (wideth - wideth_biao) - 10;      int rightDownHeight = (height - height_biao) - 10;            //左上角距离边距10像素      int leftUpWideth = 10;      int leftUpHeight = 10;            //右上角距离边距10像素      int rightUpWideth = (wideth - wideth_biao) - 10;      int rightUpHeight = 10;                  int x = 0;      int y = 0;            switch (position) {   case 0:    x = leftUpWideth;    y = leftUpHeight;    break;   case 1:    x = rightUpWideth;    y = rightUpHeight;    break;   case 2:    x = leftDownWideth;    y = leftDownHeight;    break;   case 3:    x = rightDownWideth;    y = rightDownHeight;    break;       default:    break;   }                  //水印位置      g.drawImage(src_biao, x, y , wideth_biao, height_biao, null);              //水印文件结束      g.dispose();        ImageIO.write((BufferedImage) image, "jpg", img);       } catch (Exception e) {        e.printStackTrace();       }      }  

            public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, Color color, int fontSize, int x, int y, float alpha) {          try {              File img = new File(targetImg);              Image src = ImageIO.read(img);              int width = src.getWidth(null);              int height = src.getHeight(null);              BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);              Graphics2D g = image.createGraphics();              g.drawImage(src, 0, 0, width, height, null);              g.setColor(color);              g.setFont(new Font(fontName, fontStyle, fontSize));              g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));                                  // 左上角            int leftUpWideth = 10;            int leftUpHeight = fontSize+10;                       // 左上角            int rightUpWideth = (width - (getLength(pressText) * fontSize)) - 30;            int rightUpHeight = fontSize+10;                                //左下角            int leftDownWideth = 10;            int leftDownHeight = height - fontSize;                       //右下角            int rightDownWideth = (width - (getLength(pressText) * fontSize)) - 30;            int rightDownHeight = height - 10;                                  g.drawString(pressText, x, y);            g.dispose();              ImageIO.write((BufferedImage) image, "jpg", img);          } catch (Exception e) {              e.printStackTrace();          }      }            public static void pressText(String pressText, String targetImg, String fontName, int fontStyle, Color color, int fontSize, int position, float alpha) {       try {        File img = new File(targetImg);        Image src = ImageIO.read(img);        int width = src.getWidth(null);        int height = src.getHeight(null);        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);        Graphics2D g = image.createGraphics();        g.drawImage(src, 0, 0, width, height, null);        g.setColor(color);        g.setFont(new Font(fontName, fontStyle, fontSize));        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));                  // 左上角      int leftUpWideth = 10;      int leftUpHeight = fontSize+10;            // 右上角      int rightUpWideth = (width - (getLength(pressText) * fontSize)) - 30;      int rightUpHeight = fontSize+10;                  //左下角      int leftDownWideth = 10;      int leftDownHeight = height - fontSize;            //右下角      int rightDownWideth = (width - (getLength(pressText) * fontSize)) - 30;      int rightDownHeight = height - 10;            int x = 0;      int y = 0;            switch (position) {   case 0:    x = leftUpWideth;    y = leftUpHeight;    break;   case 1:    x = rightUpWideth;    y = rightUpHeight;    break;   case 2:    x = leftDownWideth;    y = leftDownHeight;    break;   case 3:    x = rightDownWideth;    y = rightDownHeight;    break;       default:    break;   }            g.drawString(pressText, x, y);      g.dispose();        ImageIO.write((BufferedImage) image, "jpg", img);       } catch (Exception e) {        e.printStackTrace();       }      }             public static int getLength(String text) {          int length = 0;          for (int i = 0; i < text.length(); i++) {              if (new String(text.charAt(i) + "").getBytes().length > 1) {                  length += 2;              } else {                  length += 1;              }          }          return length / 2;      }          public static void ImgYin(String s,String ImgPath){        try{         File _file = new File(ImgPath);         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);         //String s="我要加的水印";         g.setColor(Color.RED);      g.setFont(new Font("宋体",Font.PLAIN,20));         Font aa=new Font("宋体",Font.PLAIN,20);              // 所写文字位置      g.drawString(s,wideth-wideth/2,height-height/4);              g.dispose();         FileOutputStream out=new FileOutputStream(ImgPath);         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);         encoder.encode(image);         out.close();        }        catch(Exception e){         System.out.println(e);        }    }

     public static void main(String[] args) {//  pressText("测试test.zz","E:/11.jpg","宋体",Font.BOLD,Color.red,20,20,20,1.0f);//  ImgYin("测试测试测试哈哈","E:/11.jpg");//  pressImage("E:/3.jpg","E:/11.jpg",100,18,0.5f);  System.out.println("执行完毕..."); } }


    最新回复(0)