package com.longtop.core.tools.file;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.FileOutputStream;import javax.swing.ImageIcon;import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEGEncodeParam;import com.sun.image.codec.jpeg.JPEGImageEncoder;import java.awt.AlphaComposite;/** *//** * 给图片加水印公共类 * * @author liqiang4j */public class WaterMarkImage...{ /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fileDest:文字水印图片保存位置 * @param alpha:透明度(0.0-1.0f) * @param fontName:字体名称 * @param fontStyle:字型 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,String fileDest,float alpha, String fontName,int fontStyle,Color fontColor,int fontSize,int x,int y)...{ ImageIcon imgIcon = new ImageIcon(filePath); Image theImg = imgIcon.getImage(); int width = theImg.getWidth(null); int height = theImg.getHeight(null); BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = bimage.createGraphics(); g.drawImage(theImg, 0, 0, width, height, null); g.setColor(fontColor); g.setFont(new Font(fontName, fontStyle, fontSize)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); g.drawString(markContent, x, height - y); g.dispose(); FileOutputStream out = null; try ...{ out = new FileOutputStream(fileDest); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); // JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage); // encoder.encode(bimage, param); encoder.encode(bimage); out.close(); } catch (Exception e) ...{ return false; } return true; } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fileDest:文字水印图片保存位置 * @param fontName:字体名称 * @param fontStyle:字型 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,String fileDest,int x,int y)...{ return createStringMark(filePath, markContent, fileDest, 1f, "宋体", Font.PLAIN, Color.BLACK, 36, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param alpha:透明度(0.0-1.0f) * @param fontName:字体名称 * @param fontStyle:字型 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,float alpha,String fontName, int fontStyle,Color fontColor,int fontSize,int x,int y)...{ return createStringMark(filePath, markContent, filePath, alpha, fontName, fontStyle, fontColor, fontSize, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fontName:字体名称 * @param fontStyle:字型 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,String fontName,int fontStyle, Color fontColor,int fontSize,int x,int y)...{ return createStringMark(filePath, markContent, filePath, 1.0f, fontName, fontStyle, fontColor, fontSize, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fontStyle:字型 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,int fontStyle,Color fontColor, int fontSize,int x,int y)...{ return createStringMark(filePath, markContent, "宋体", fontStyle, fontColor, fontSize, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fontColor:字体颜色 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,Color fontColor,int fontSize,int x,int y)...{ return createStringMark(filePath, markContent, Font.PLAIN, fontColor, fontSize, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param fontSize:字体大小 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,int fontSize,int x,int y)...{ return createStringMark(filePath, markContent, Color.BLACK, fontSize, x, y); } /** *//** * 给图片添加文字水印 * * @param filePath:需要添加水印的图片的路径 * @param markContent:水印的文字 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createStringMark(String filePath,String markContent,int x,int y)...{ return createStringMark(filePath, markContent, 36, x, y); } /** *//** * 给图片添加图像水印 * * @param filePath:需要添加水印的图片的路径 * @param imgPath:水印图片路径 * @param fileDest:添加水印后的图片保存路径 * @param alpha:透明度 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createImageMark(String filePath,String imgPath,String fileDest,float alpha,int x,int y)...{ // 要处理的原始图片 ImageIcon icoInput = new ImageIcon(filePath); Image imgInput = icoInput.getImage(); int width = imgInput.getWidth(null); int height = imgInput.getHeight(null); BufferedImage buffInput = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 要添加上来的水印 ImageIcon icoADD = new ImageIcon(imgPath); Image imgADD = icoADD.getImage(); int w = imgADD.getWidth(null); int h = imgADD.getHeight(null); // 绘图 Graphics2D g = buffInput.createGraphics(); g.drawImage(imgInput, 0, 0, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 下面代码的前面五个参数:图片,x坐标,y坐标,图片宽度,图片高度 g.drawImage(imgADD, x, y, w, h, null); // 靠左上绘制,x和y都是10 g.dispose(); try ...{ FileOutputStream out = new FileOutputStream(fileDest); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); // JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffInput); // encoder.encode(buffInput, param); encoder.encode(buffInput); out.close(); } catch (Exception e) ...{ return false; } return true; } /** *//** * 给图片添加图像水印 * * @param filePath:需要添加水印的图片的路径 * @param imgPath:水印图片路径 * @param alpha:透明度 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createImageMark(String filePath,String imgPath,float alpha,int x,int y)...{ return createImageMark(filePath, imgPath, filePath, alpha, x, y); } /** *//** * 给图片添加图像水印 * * @param filePath:需要添加水印的图片的路径 * @param imgPath:水印图片路径 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createImageMark(String filePath,String imgPath,int x,int y)...{ return createImageMark(filePath, imgPath, filePath, 1.0f, x, y); } /** *//** * 给图片添加图像水印 * * @param filePath:需要添加水印的图片的路径 * @param imgPath:水印图片路径 * @param fileDest:添加水印后的图片保存路径 * @param x:横坐标 * @param y:竖坐标 * @return true:成功;false:失败 */ public static boolean createImageMark(String filePath,String imgPath,String fileDest,int x,int y)...{ return createImageMark(filePath, imgPath, fileDest, 1.0f, x, y); } // main方法:程序入口 public static void main(String args[])...{ // 文字水印 WaterMarkImage.createStringMark("F:/waterMark/source.jpg", "生成图像例子。。。。。。", 10,10); WaterMarkImage.createImageMark("F:/waterMark/source.JPG", "F:/waterMark/mark.JPG", "F:/waterMark/source2.JPG",0.5f, 20, 20); }}