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("执行完毕..."); } }