首页

通过java代码生成目标图片并标记文字水印效果(代码示例)

标签:图片文字水印,代码,源码,图文处理,java,系统安全     发布时间:2015-12-06   

一、前言

通过awt包下的Graphics2D类在java平台来实现二维形状、文本和图像的复制操作控制,详情见其API文档,现在我们需要将下列图片戳伤绿色30号字体“小木人印象网”文字水印效果

通过java代码生成目标图片并标记文字水印效果(代码示例)

二、代码示例

package jh.modules.image;@b@@b@import java.awt.Color;@b@import java.awt.Font;@b@import java.awt.Graphics2D;@b@import java.awt.Image;@b@import java.awt.image.BufferedImage;@b@import java.io.File;@b@import java.io.FileOutputStream;@b@@b@import javax.imageio.ImageIO;@b@@b@/**@b@ * 给图片添加文字水印工具类@b@ * @Version 1.0@b@ */@b@@b@public class ImgTextMarkUtils {@b@    @b@    /**@b@     * 图片添加水印方法 ,输出图片在源目录下,以"_TM_"系统时间戳组合输出@b@     * @param srcImgPath 源图片的路径@b@     * @param words 水印的文字@b@     * @param wordsColor 水印文字的颜色@b@     */@b@    public static void stamp(String srcImgPath, String words,Color wordsColor) {@b@        if(srcImgPath.contains(".")){@b@            String targetImgPath=srcImgPath.substring(0,srcImgPath.lastIndexOf("."))+"_TM"+"_"+System.currentTimeMillis()+srcImgPath.substring(srcImgPath.lastIndexOf("."));@b@            stamp(srcImgPath,targetImgPath,words,wordsColor, new Font("微软雅黑", Font.PLAIN,30),"jpg");@b@            @b@        }@b@    }@b@    @b@    @b@    /**@b@     * 图片添加水印方法@b@     * @param srcImgPath 源图片的路径@b@     * @param outImgPath 目标输出图片路径@b@     * @param words 水印的文字@b@     * @param wordsColor 设置水印文字的颜色@b@     * @param wordFont 设置水印文字字体格式@b@     * @param picSuffix 设置输出图片后缀@b@     */@b@    public static void stamp(String srcImgPath, String outImgPath, String words,Color wordsColor, Font wordFont,String picSuffix) {@b@        try {@b@           @b@            File srcImgFile = new File(srcImgPath); // 读取原图片文件内容@b@            Image srcImg = ImageIO.read(srcImgFile);@b@            int srcImgWidth = srcImg.getWidth(null);@b@            int srcImgHeight = srcImg.getHeight(null);@b@            @b@            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);//准备设置水印效果@b@            Graphics2D g = bufImg.createGraphics();@b@            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);@b@            g.setColor(wordsColor); //设置图片水印颜色@b@            g.setFont(wordFont);//设置水印文字字体格式@b@            int x = srcImgWidth - g.getFontMetrics(g.getFont()).charsWidth(words.toCharArray(), 0, words.length()) - 3;@b@            int y = srcImgHeight - 3;@b@            g.drawString(words, x, y);@b@            g.dispose();@b@          @b@            FileOutputStream outImgStream = new FileOutputStream(outImgPath);//输出图片路径@b@            ImageIO.write(bufImg,picSuffix, outImgStream);@b@            outImgStream.flush();@b@            outImgStream.close();@b@        } catch (Exception e) {@b@            e.printStackTrace();@b@        }@b@    }@b@     @b@    @b@    public static void main(String[] args) {@b@        ImgTextMarkUtils.stamp("c:/Users/nijun/Desktop/2015-12-06_165048.jpg", "小木人印象网",Color.blue);@b@    }@b@}

运行main方法,输出结果如下

通过java代码生成目标图片并标记文字水印效果(代码示例)