水印图片效果实现

水印图片实现代码:

package com.billfox.image;

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 java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public final class ImageUtils {
public ImageUtils() {

}

/*
 * public final static String getPressImgPath() { return ApplicationContext
 * .getRealPath("/template/data/util/shuiyin.gif"); }
 */

/**
 * 把图片印刷到图片上
 * 
 * @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.dispose();
        FileOutputStream out = new FileOutputStream(targetImg);
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(image);
        out.close();
    } 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, int 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);
        // String s="www.qhd.com.cn";
        g.setColor(Color.RED);
        g.setFont(new Font(fontName, fontStyle, fontSize));

        g.drawString(pressText, wideth - fontSize - x, height - fontSize
                / 2 - y);
        g.dispose();
        FileOutputStream out = new FileOutputStream(targetImg);
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
        encoder.encode(image);
        out.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

public static void main(String[] args) {
   //pressImage("d:/t2.jpg","d:/t1.jpg", 0, 0);
   pressText("最爱海贼王","d:/t1.jpg","宋体",Font.BOLD, 0,50,-100,-100);//图片的左下角是(0,0)点,往左和往上,均为负数。
   System.out.println("over");
    }
}   

注意事项:

描述:在Eclispe中编写项目,要引入下面两个包
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
我将JRE System Library修改为1.8就可以编译了,但是尝试了如下设置也可以通过编译,方法步骤如下:

Eclipse 默认把这些受访问限制的API设成了ERROR。

只要把Windows - Preferences - Java - Complicer - Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过。

相关文章
http://blog.csdn.net/limm33/article/details/52818867

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值