package shuiyin;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class shuiyi {
public static void main(String[] args) {
new shuiyi().getImgForImg("D:/kkk/kk.jpg", "D:/kkk/kkk.jpg",1,1,0.5f);
}
/**
* 图片水印
*
* @param:参数含义
* backStr:为背景图片,topStr水印,x/y定义水印的初始位置
* backStr:背景图片
* topStr:水印图片
* Location:图片为9块,从上到下一次为1:左上方,2:右上方,3:左下方,4:右下方 以此来定义该选择区域的位置
* topImgTimes:水印放大倍数
* alpha:设置图片的透明度(该透明度的范围在0~1之间)
* */
public void getImgForImg(String backStr, String topStr, int location,int topImgTimes,float alpha) {
try {
// 得到背景图片文件
Image topImg = ImageIO.read(new FileInputStream(topStr));
int wb = topImg.getHeight(null);
int hb = topImg.getHeight(null);
// 得到水印图片文件
Image backImg = ImageIO.read(new FileInputStream(backStr));
int wt = backImg.getWidth(null);
int ht = backImg.getHeight(null);
int x = 0;
int y = 0;
//构建水印的位置
switch(location){
case 1:
x = 0;
y = 0;
break;
case 2:
x = wb-wt*topImgTimes;
y = 0;
break;
case 3:
x = 0;
y = hb-ht*topImgTimes;
break;
case 4:
x = wb-wt*topImgTimes;
y = hb-ht*topImgTimes;
break;
default:
return;
}
// 构建一个画板
BufferedImage image = new BufferedImage(wb, hb,BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics(); // 得到画笔
// drawImage(Image,初始X轴,初始Y轴,图片的宽度,图片的高度,null);
g.drawImage(backImg, 0, 0, wb, hb, null);// 绘制一张图片
//设置透明度
*g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));******
g.drawImage(topImg, x, y, wt*topImgTimes, ht*topImgTimes, null);// 再绘制一张图片
g.dispose();// 生成图片
// 输出流,完成合成图片的输出
String zuizhong="D://kkk//kk4.jpg";
FileOutputStream fileOutputStream = new FileOutputStream(zuizhong);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
encoder.encode(image);}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
据说最新版本jdk,sun.security.action中没有 LoadLibraryAction.class,你JDK用的是什么版本的