public static void createWaterMark(String picFrom, String picTo, String MARK, int Op, int quality) {
try {
MagickImage mark = new MagickImage(new ImageInfo(MARK));
Dimension markDim = mark.getDimension();
int mark_width = markDim.width;
int mark_height = markDim.height;
ImageInfo info = new ImageInfo(picFrom);
if(quality>0) {
info.setQuality(quality);
}
MagickImage image = new MagickImage(info);
Dimension imageDim = image.getDimension();
int pic_width = imageDim.width;
int pic_height = imageDim.height;
int offsetX = pic_width - mark_width-10;
int offsetY = pic_height - mark_height-10;
String cmd = "composite -geometry +" + offsetX+ "+" + offsetY + " -quality 96 "+ MARK + " " + picFrom + " " + picTo;
//String cmd = "/usr/local/bin/convert -draw 'image Over " + offsetX+ "," + offsetY + " "+ mark_width+ "," + mark_height + " " + MARK + "' -quality 96 " + picFrom + " " + picTo;
System.out.println(cmd);
if(true) {
if(Op>0 && Op<16) {
image.compositeImage(Op, mark, offsetX, offsetY);
}
image.setFileName(picTo);
image.writeImage(info);
} else {
Runtime runtime = Runtime.getRuntime();
if( runtime == null ) {
System.err.println("runtime Error!");
}
try {
Process ps = runtime.exec(cmd);
ps.waitFor();
} catch (Exception E) {E.printStackTrace();}
}
} catch(MagickApiException ex) {
ex.printStackTrace();
} catch(MagickException ex) {
ex.printStackTrace();
}
}
方法二:
void setWaterMark(String pic,int boardid){
MagickImage mark = null;
MagickImage image = null;
try{
ImageInfo info = new ImageInfo(pic);
image = new MagickImage(info);
String filetype = image.getMagick();
if (!filetype.equalsIgnoreCase("JPEG") && !filetype.equalsIgnoreCase("JPG")) return;
int imgWidth = image.getDimension().width;
int imgHeight = image.getDimension().height;
int fileSize = image.sizeBlob();
String markFileName = "";
if(imgWidth > 100 && imgHeight > 100){
if(imgWidth>200 && (boardid==4 || boardid==11 || boardid==16 || boardid==34)) {
if(imgWidth<480) {
markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_400.png";
} else if(imgWidth<700) {
markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_600.png";
} else if(imgWidth<1024) {
markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_800.png";
} else if(imgWidth>=1024) {
markFileName = "/opt/album/pic/chinaren_club_"+boardid+"_logo_1024.png";
}
} else if(imgWidth>100 && (boardid<955 || boardid==960)) {
if(imgWidth<200) {
markFileName = "/opt/album/pic/chinaren_club_logo_100.png";
} else if(imgWidth<700) {
markFileName = "/opt/album/pic/chinaren_club_logo_200.png";
} else if(imgWidth<1024) {
markFileName = "/opt/album/pic/chinaren_club_logo_800.png";
} else if(imgWidth>=1024) {
markFileName = "/opt/album/pic/chinaren_club_logo_1024.png";
}
}
mark = new MagickImage(new ImageInfo(markFileName));
int markWidth = mark.getDimension().width;
int markHeight = mark.getDimension().height;
int offsetX = imgWidth - markWidth - 10;
int offsetY = imgHeight - markHeight - 2;
image.compositeImage(3, mark, offsetX, offsetY);
image.setImageAttribute("Comment","Copyright www.ChinaRen.Com ");
image.signatureImage();
image.writeImage(info);
}
}catch(Exception e) {
e.printStackTrace();
System.err.println("MarkWater '"+pic+"' fail!");
}finally{
if(mark != null){
try{mark.destroyImages();}catch(Exception e){}
}
if(image != null){
try{image.destroyImages();}catch(Exception e){}
}
}
}
参考网址:
http://pengsky2002.javaeye.com/blog/243633
http://flyeruo.bokee.com/viewdiary.11808848.html
http://tech.it168.com/j/2008-06-01/200806010908486.shtml
图片打水印方法
最新推荐文章于 2022-08-06 22:14:28 发布