zoukankan      html  css  js  c++  java
  • Java 给图片加 文字水印

    package com.fh.util;
    
    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 javax.imageio.ImageIO;
    //import java.io.FileOutputStream;
    //import com.sun.image.codec.jpeg.JPEGCodec;
    //import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    /**
     * 说明:图片水印处理类
     * 作者:FH Admin
     * from:www.fhadmin.org
     */
    public class Watermark {
    	
    		private	static String strFWATERM,strIWATERM;
    		
    		static{
    			strFWATERM = Tools.readTxtFile(Const.FWATERM);	//读取文字水印配置
    			strIWATERM = Tools.readTxtFile(Const.IWATERM);	//读取图片水印配置
    		}
    		
    		/**
    		 * 刷新
    		*/
    		public static void fushValue(){
    			strFWATERM = Tools.readTxtFile(Const.FWATERM);	//读取文字水印配置
    			strIWATERM = Tools.readTxtFile(Const.IWATERM);	//读取图片水印配置
    		}
    			
    		/**
    		 * @param imagePath 图片全路径
    		*/
    	  	public static void setWatemark(String imagePath){ 
    	  		//文字水印
    	  		if(null != strFWATERM && !"".equals(strFWATERM)){
    				String strFW[] = strFWATERM.split(",fh,");
    				if(strFW.length == 5){
    					if("yes".equals(strFW[0])){
    						pressText(strFW[1].toString(), imagePath, "", 1, Color.RED,Integer.parseInt(strFW[2]), Integer.parseInt(strFW[3]), Integer.parseInt(strFW[4]));	//文字
    					}
    				}
    			}
    	  		//图片水印
    			if(null != strIWATERM && !"".equals(strIWATERM)){
    				String strIW[] = strIWATERM.split(",fh,");
    				if(strIW.length == 4){
    					if("yes".equals(strIW[0])){
    						pressImage(PathUtil.getClasspath() + Const.FILEPATHIMG+strIW[1], imagePath, Integer.parseInt(strIW[2]), Integer.parseInt(strIW[3]));
    					}
    				}
    			}
    		  } 
    	  
    	    /**
    	     * 把图片印刷到图片上
    	     * 
    	     * @param pressImg --
    	     *            水印文件
    	     * @param targetImg --
    	     *            目标文件
    	     * @param x
    	     *            --x坐标
    	     * @param y
    	     *            --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) / 2,(height - height_biao) / 2, wideth_biao, height_biao, null);
    	            g.drawImage(src_biao, x, y, wideth_biao, height_biao, null);
    	            //水印文件结束
    	            g.dispose();
    	            /*FileOutputStream out = new FileOutputStream(targetImg);
    	            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    	            encoder.encode(image);
    	            out.close();*/
    	            String formatName = targetImg.substring(targetImg.lastIndexOf(".") + 1);
    	            ImageIO.write(image, /*"GIF"*/ formatName /* format desired */ , new File(targetImg) /* target */ );
    	            
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	        }
    	    }
    
    	    /**
    	     * 打印文字水印图片
    	     * 
    	     * @param pressText
    	     *            --文字
    	     * @param targetImg --
    	     *            目标图片
    	     * @param fontName --
    	     *            字体名
    	     * @param fontStyle --
    	     *            字体样式
    	     * @param color --
    	     *            字体颜色
    	     * @param fontSize --
    	     *            字体大小
    	     * @param x --
    	     *            偏移量
    	     * @param y
    	     */
    
    	    public static void pressText(String pressText, String targetImg,
    	    		String fontName, int fontStyle, Color 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);
    	            g.setFont(new Font(fontName, fontStyle, fontSize));
    	            g.drawString(pressText, x, y);
    	            g.dispose();
    	            /*FileOutputStream out = new FileOutputStream(targetImg);
    	            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    	            encoder.encode(image);
    	            out.close();*/
    	            String formatName = targetImg.substring(targetImg.lastIndexOf(".") + 1);
    	            ImageIO.write(image, /*"GIF"*/ formatName /* format desired */ , new File(targetImg) /* target */ );
    	        } catch (Exception e) {
    	            System.out.println(e);
    	        }
    	    }  
    	  
    	
    	
    }
    

      

    工作流模块-------------------------------www.fhadmin.org

    1.模型管理 :web在线流程设计器、导入导出xml、复制流程、部署流程

    2.流程管理 :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起

    3.运行中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办人、自由跳转

    4.历史的流程:查看流程信息、流程用时、流程状态、查看任务发起人信息

    5.待办任务 :查看本人个人任务以及本角色下的任务、办理、驳回、作废、指派一下代理人

    6.已办任务 :查看自己办理过的任务以及流程信息、流程图、流程状态(作废 驳回 正常完成)

    办理任务时候可以选择用户进行抄送,就是给被抄送人发送站内信通知当前审批意见以及备注信息

    注:当办理完当前任务时,下一任务待办人会即时通讯收到新任务消息提醒,当作废和完结任务时,

    任务发起人会收到站内信消息通知

  • 相关阅读:
    poj 2942 Knights of the Round Table(无向图的双连通分量+二分图判定)
    Java序列化的几种方式
    Android 四大组件学习之Service六
    cursor:pointer的意思
    JSP中<base href="<%=basePath%>">的作用
    一篇让Java程序猿随时可以翻看的Oracle总结
    史上最全的javascript知识点总结,浅显易懂。
    史上最全的HTML、CSS知识点总结,浅显易懂。
    css学习归纳总结
    Web前端开发Chrome插件
  • 原文地址:https://www.cnblogs.com/sjingser1/p/14884058.html
Copyright © 2011-2022 走看看