⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 watermarkutil.java

📁 cwbbs 云网论坛源码
💻 JAVA
字号:
package cn.js.fan.util.file.image;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.awt.Image;import java.io.File;import com.sun.image.codec.jpeg.JPEGCodec;import java.io.FileOutputStream;import java.awt.image.BufferedImage;import java.awt.Font;import java.awt.Color;import java.awt.AlphaComposite;import java.awt.Graphics2D;public class WaterMarkUtil {    public static final int POS_CENTER = 0;    public static final int POS_RIGHT_BOTTOM = 3;    public static final int POS_RIGHT_TOP = 4;    public static final int POS_LEFT_TOP = 1;    public static final int POS_LEFT_BOTTOM = 2;    public static int offsetX = 12;    public static int offsetY = 12;    public int pos;    public int srcImgWidth, srcImgHeight;    public int markImgWidth, markImgHeight;    public WaterMarkUtil(int pos) {        this.pos = pos;    }    public int getMarkTop() {        int n = offsetY;        switch(pos) {        case POS_RIGHT_TOP :            n = offsetY;            break;        case POS_RIGHT_BOTTOM:            n = srcImgHeight - offsetY - markImgHeight;            break;        case POS_LEFT_TOP:            n = offsetY;            break;        case POS_LEFT_BOTTOM:            n = srcImgHeight - offsetY - markImgHeight;            break;        default:            n = srcImgHeight - offsetY - markImgHeight;        }        return n;    }    public int getMarkLeft() {        int n = offsetX ;        switch(pos) {        case POS_RIGHT_TOP :            n = srcImgWidth - offsetX - markImgWidth ;            break;        case POS_RIGHT_BOTTOM:            n = srcImgWidth - offsetX - markImgWidth;            break;        case POS_LEFT_TOP:            n = offsetX ;            break;        case POS_LEFT_BOTTOM:            n = offsetX;            break;        default:            n = offsetX;        }        return n;    }    public int getMarkStringTop() {        int n = offsetY;        switch(pos) {        case POS_RIGHT_TOP :            n = offsetY;            break;        case POS_RIGHT_BOTTOM:            n = srcImgHeight - offsetY;            break;        case POS_LEFT_TOP:            n = offsetY;            break;        case POS_LEFT_BOTTOM:            n = srcImgHeight - offsetY;            break;        default:            n = offsetY;        }        return n;    }    public int getMarkStringLeft() {        int n = offsetX ;        switch(pos) {        case POS_RIGHT_TOP :            n = srcImgWidth - offsetX ;            break;        case POS_RIGHT_BOTTOM:            n = srcImgWidth - offsetX;            break;        case POS_LEFT_TOP:            n = offsetX ;            break;        case POS_LEFT_BOTTOM:            n = offsetX;            break;        default:            n = offsetX;        }        return n;    }        public void mark(String srcFilePath, String newFilePath, String waterMarkStr, Font font, Color color, float alpha) {        try {            File srcFile = new File(srcFilePath);            Image srcImg = javax.imageio.ImageIO.read(srcFile);            srcImgWidth = srcImg.getWidth(null);            srcImgHeight = srcImg.getHeight(null);            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight,                                                     BufferedImage.TYPE_INT_RGB);            Graphics2D g = bufImg.createGraphics();            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);            if (font==null)                g.setFont(new Font("隶书", Font.BOLD, 20));             else                g.setFont(font);            if (color==null)                g.setColor(Color.BLUE);             else                g.setColor(color);            AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.                    SRC_OVER, alpha);            g.setComposite(ac);                                    g.drawString(waterMarkStr, getMarkStringLeft(), getMarkStringTop());             g.dispose();             FileOutputStream out = new FileOutputStream(newFilePath);            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);            encoder.encode(bufImg);                                                out.close();        } catch (Exception e) {            System.out.println(e.getMessage());            e.printStackTrace();        }    }        public void mark(String srcFilePath, String newFilePath, String waterMarkImgPath, float alpha) {        try {            File srcFile = new File(srcFilePath);            Image srcImg = javax.imageio.ImageIO.read(srcFile);            srcImgWidth = srcImg.getWidth(null);            srcImgHeight = srcImg.getHeight(null);            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight,                    BufferedImage.TYPE_INT_RGB);            Graphics2D g = bufImg.createGraphics();            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);            Image img1 = javax.imageio.ImageIO.read(new File(waterMarkImgPath));            markImgWidth = img1.getWidth(null);            markImgHeight = img1.getHeight(null);            AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.                    SRC_OVER, alpha);            g.setComposite(ac);            g.drawImage(img1, getMarkLeft(), getMarkTop(), markImgWidth,                        markImgHeight, null);            g.dispose();             FileOutputStream out = new FileOutputStream(newFilePath);            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);            encoder.encode(bufImg);                                                out.close();        } catch (Exception e) {            System.out.println(e.getMessage());            System.out.println("water mark img path:" + waterMarkImgPath);            e.printStackTrace();        }    }    public void setOffsetX(int x) {        offsetX = x;    }    public void setOffsetY(int y) {        offsetY = y;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -