java 制作图片水印

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() {    
   
    }    
   
    /**   
     * 把图片印刷到图片上   
     *    
     * @param pressImg --   
     *            水印文件   
     * @param targetImg --   
     *            目标文件   
     * @param x   
     * @param 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 - x, height    
                    - height_biao - y, 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.143zh.com";    
            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("pressImg.jpg", "targetImg.jpg", 20, 20);    
    }    
} 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值