java 添加水印

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a919423654/article/details/78667960

首先:我们需要创建 水印图片.

1:打开ps,

2:创建先文件,宽高根据情况进行设置,要注意的点就是  需要把背景修改为透明

        3: 点击左侧的 [T]  添加文字 可以设置,顶部的可以选择字体的样式 微软雅黑等等

        3:如果水印需要是 倾斜可以 通过ctrl+t快捷键,或者 【编辑】---->[自由变换]

        4: 设置透明度(在右侧,显示图层的 上面,有个透明度,进行调节)

        5:【文件】-----》存储为web使用格式(会弹出一个框)

6:保存   。到这里 水印图片就只做完毕


效果图:


java 代码: 这个是网上找个,可以使用


///////////////////////////////////多个水印///////////////////////////////////////
	/** 水印透明度 */
	 private static float alpha = 0.5f;
	 /** 水印图片旋转角度 */
	 private static double degree = 0f;
	 private static int interval = 0;
	 
	 
	 /**
	  * 设置水印参数,不设置就使用默认值
	  * 
	  * @param alpha
	  *   水印透明度
	  * @param degree
	  *   水印图片旋转角度 *
	  * @param interval
	  *   水印图片间隔
	  */
	  public static void setImageMarkOptions(float alpha, int degree,int interval) {
		  if (alpha != 0.0f) {
			  ImageUtils.alpha = alpha;
		  }
		  if (degree != 0f) {
			  ImageUtils.degree = degree;
		  }
		  if (interval != 0f) {
			  ImageUtils.interval = interval;
		  }
	  }
	
	  /**
	   * 给图片添加水印图片
	   * 
	   * @param waterImgPath
	   *   水印图片路径
	   * @param srcImgPath
	   *   源图片路径
	   * @param targerPath
	   *   目标图片路径
	   */
	   public static void waterMarkByImg(String waterImgPath, String srcImgPath,String targerPath) throws Exception {
		   waterMarkByImg(waterImgPath, srcImgPath, targerPath, 0);
	   }
	  
	   
	   /**
	    * 给图片添加水印图片
	    * 
	    * @param waterImgPath
	    *   水印图片路径
	    * @param srcImgPath
	    *   源图片路径
	    * @param targerPath
	    *   目标图片路径
	    */
	    public static void waterMarkByImg(String waterImgPath, String srcImgPath) {
		    try {
		    	//String targetFile = ImageUtils.getUrl(srcImgPath, "shuiyin_");
		    	waterMarkByImg(waterImgPath, srcImgPath, srcImgPath, 0);
		    } catch (Exception e) {
		    	// TODO Auto-generated catch block
		    	e.printStackTrace();
		    }
	    }
	    
	    
	    /**
	     * 给图片添加水印图片、可设置水印图片旋转角度
	     * 
	     * @param waterImgPath
	     *   水印图片路径
	     * @param srcImgPath
	     *   源图片路径
	     * @param targerPath
	     *   目标图片路径
	     * @param degree
	     *   水印图片旋转角度
	     */
	     public static void waterMarkByImg(String waterImgPath, String srcImgPath,
	    		 String targerPath, double degree) throws Exception {
		     OutputStream os = null;
		     try {
		     
			     Image srcImg = ImageIO.read(new File(srcImgPath));
			     
			     BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
			      srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
			     
			     // 1、得到画笔对象
			     Graphics2D g = buffImg.createGraphics();
			     
			     // 2、设置对线段的锯齿状边缘处理
			     g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
			      RenderingHints.VALUE_INTERPOLATION_BILINEAR);
			     g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg
			      .getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);
			     // 3、设置水印旋转
			     if (0 != degree) {
				     g.rotate(Math.toRadians(degree),
				    		 	(double) buffImg.getWidth() / 2,
				    		 	(double) buffImg.getHeight() / 2);
				     
			     }
			     
			     // 4、水印图片的路径 水印图片一般为gif或者png的,这样可设置透明度
			     ImageIcon imgIcon = new ImageIcon(waterImgPath);
			     
			     // 5、得到Image对象。
			     Image img = imgIcon.getImage();
			     
			     g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
			      alpha));
			     
			     // 6、水印图片的位置
			     for (int height = interval + imgIcon.getIconHeight(); height < buffImg
			      .getHeight(); height = height +interval+ imgIcon.getIconHeight()) {
			     for (int weight = interval + imgIcon.getIconWidth(); weight < buffImg
			      .getWidth(); weight = weight +interval+ imgIcon.getIconWidth()) {
			      g.drawImage(img, weight - imgIcon.getIconWidth(), height
			      - imgIcon.getIconHeight(), null);
			     }
			     }
			     g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
			     // 7、释放资源
			     g.dispose();
			     
			     // 8、生成图片
			     os = new FileOutputStream(targerPath);
			     ImageIO.write(buffImg, "JPG", os);
			     
			     //System.out.println("图片完成添加水印图片");
		     
		     } catch (Exception e) {
		     e.printStackTrace();
		     } finally {
		     try {
		     if (null != os)
		      os.close();
		     } catch (Exception e) {
		     e.printStackTrace();
		     }
		     }
	     }
	     
	///////////////////////////////////多个水印////////////////////////////////////////////
	     public static void main(String[] args) {
		 		//markImageByMosaic("D:\\10.jpg","D:\\","11","jpg",15);
		 		//最后一个参数是设置旋转
		 		//markImageBySingleText("D:\\10.jpg","D:\\","测试使用","jpg",new Color(0,0,255),"中铁",null);
		 		
		 		/*createMark("D:\\10.jpg", "D:\\水印2.jpg",  
		                 "测试使用", null, 1, "方正楷体简体", 30, 700, 300,  
		                 Color.GRAY); */ 
	    	 
	    	 
		    	 System.out.println("..添加水印图片开始...");
		    	//watermarkPath 水印图片地址 uploadPath 上传成功后文件地址
		    	 
		    	//修改默认参数
		    	 ImageUtils.setImageMarkOptions(0.0f,0,20);
		    	 
		    	 ImageUtils.waterMarkByImg("D:\\shuiyin.png", "D:\\身份.jpg","D:\\身份shuiyin.jpg");
		    	 System.out.println("..添加水印图片结束...");
		 	}


猜你喜欢

转载自blog.csdn.net/a919423654/article/details/78667960