java給圖片新增水印工具類
阿新 • • 發佈:2019-01-11
給圖片新增水印這個功能以前做專案的時候遇到過 但是後來好久不用今天突然想起來 就隨筆記錄一下吧 隨便在記錄一下自己當初踩的坑
package Img; 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 com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import javax.imageio.ImageIO; public class ImgUtil { /** * 新增圖片水印 * @param pressImg * @param targetImg * @param x * @param y */ public final static void pressImage(String pressImg, String targetImg, 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); // 水印檔案 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 - x, height - height_biao - y, wideth_biao, height_biao, null); g.dispose(); FileOutputStream out = new FileOutputStream(targetImg); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 新增文字水印 * * @param pressText * --文字 * @param targetImg * --目標圖片 * @param fontName * --字型名 * @param fontStyle * --字型樣式 * @param color * --字型顏色 * @param fontSize * --字型大小 * @param x * --X偏移量 * @param y * --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-x,height-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("g:image/222.jpg", "g:image/225.jpg", 20, 20); pressText("JiangNan", "g:image/226.jpg","宋體",10,10,60,260, 40); } }
這個就是我的工具類 ,但是很多人直接複製會出錯,在g.drawString(str,x,y)這個方法中報錯java.lang.charsequence一開始感覺莫名其妙的但是仔細查了一下才發現是我的jdk的原因將jdk降級就OK了 我用的1.8 我將jdk將到了1.6就好了 看來還是得多學英語啊!