java.imageIo给图片添加水印

最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印;

一下提供下个方法,希望大家可以用得着:

package com.blogs.image;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import javax.imageio.ImageIO;import javax.swing.ImageIcon;/** * 图片水印 ImageUtil {/*** @param args main(String[] args) {String srcImgPath = “e:/2.png”;String iconPath = “e:\\logo.jpg”;String targerPath = “e:/3.jpg”;// 给图片添加水印ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,0, 0.1f);// 给图片添加水印,水印旋转-45// ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,// targerPath2, -45);}/*** 给图片添加水印、可设置水印图片旋转角度** @param iconPath*水印图片路径* @param srcImgPath*源图片路径* @param targerPath*目标图片路径* @param degree*水印图片旋转角度* @param width*宽度(与左相比)* @param height*高度(与顶相比)* @param clarity*透明度(小于1的数)越接近0越透明 waterMarkImageByIcon(String iconPath, String srcImgPath,String targerPath, Integer degree, Integer width, Integer height,float clarity) {OutputStream os = null;try {Image srcImg = ImageIO.read(new File(srcImgPath));System.out.println(“width:” + srcImg.getWidth(null));System.out.println(“height:” + srcImg.getHeight(null));BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);// 得到画笔对象// Graphics g= buffImg.getGraphics();Graphics2D g = buffImg.createGraphics();// 设置对线段的锯齿状边缘处理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);if (null != degree) {// 设置水印旋转g.rotate(Math.toRadians(degree),(double) buffImg.getWidth() / 2,(double) buffImg.getHeight() / 2);}// 水印图象的路径 水印一般为gif或者png的,这样可设置透明度ImageIcon imgIcon = new ImageIcon(iconPath);// 得到Image对象。Image img = imgIcon.getImage();float alpha = clarity; // 透明度g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));// 表示水印图片的位置g.drawImage(img, width, height, null);g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));g.dispose();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();}}}/*** 给图片添加水印、可设置水印图片旋转角度** @param logoText*水印文字* @param srcImgPath*源图片路径* @param targerPath*目标图片路径* @param degree*水印图片旋转角度* @param width*宽度(与左相比)* @param height*高度(与顶相比)* @param clarity*透明度(小于1的数)越接近0越透明 waterMarkByText(String logoText, String srcImgPath,String targerPath, Integer degree, Integer width, Integer height,Float clarity) {// 主图片的路径InputStream is = null;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);// 得到画笔对象// Graphics g= buffImg.getGraphics();Graphics2D g = buffImg.createGraphics();// 设置对线段的锯齿状边缘处理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);if (null != degree) {// 设置水印旋转g.rotate(Math.toRadians(degree),(double) buffImg.getWidth() / 2,(double) buffImg.getHeight() / 2);}// 设置颜色g.setColor(Color.red);// 设置 Fontg.setFont(new Font(“宋体”, Font.BOLD, 30));float alpha = clarity;g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));// 第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) .g.drawString(logoText, width, height);g.dispose();os = new FileOutputStream(targerPath);// 生成图片ImageIO.write(buffImg, “JPG”, os);System.out.println(“添加水印文字完成!”);} catch (Exception e) {e.printStackTrace();} finally {try {if (null != is)is.close();} catch (Exception e) {e.printStackTrace();}try {if (null != os)os.close();} catch (Exception e) {e.printStackTrace();}}}},网站空间,美国服务器,香港虚拟主机当我要取的时候,你淘气的躲开了,

java.imageIo给图片添加水印

相关文章:

你感兴趣的文章:

标签云: