㈠ Java实现添加文字水印、图片水印功能实战!
本文介绍Java实现图片上加文字水印的方法,水印可以是图片或文字,操作简便。
Java实现图片添加水印分为文字水印与图片水印。
获取原始图片信息。步骤一:获取图片。
通常,图片获取方式有本地读取与网络读取两种。
读取本地图片,示例代码如下。
读取网络图片,示例代码如下。
添加水印。获取图片后,通过画笔实现水印添加,水印支持文字与图片。
画笔配置水印颜色、大小、样式。
计算水印内容长度的getWatermarkLength方法。
使用Font设置字体。
正确设置水印坐标避免看不到效果。
方法一:设置固定坐标值。
方法二:根据原图大小设置,如放置在中心。
处理图片至本地,查看添加效果。
代码执行后,本地生成t.png,显示文字水印。
实现图片水印。下载图片,配置至代码中。
执行图片水印代码,查看t.png显示水印图片。
完成Java图片水印添加。
㈡ 用Java给jpg图片加文字水印,加的水印盖住了原来的图片,怎么办。
jpg文件上的水印的清除方法:
如果需要将带水印的JPG转换成05H的PDG:
1、 将PDG批量更名为JPG。如果下载的时候就已经是JPG,则此步省略。
2、用ComicEnhancer Pro打开带水印的JPG,色彩选“单色”,水印没了吧?不过这个时候文字多半也会变得很细,可以通过增加“Gamma校正”值,或用“曲线”来加黑。注意“Gamma校正”和“曲线”选一个足矣。调节好以后,转换成TIFF。
3、将TIFF文件更名为PDG,并且符合PDG文件命名规范,然后用高版本DjVuToy的“PDG压缩”功能转换成05H的PDG。注意转换的时候把“转换为快速版”选项去掉。
如果不需要转换成PDG,而是希望在去掉水印的同时尽可能保持清晰:
1、将PDG批量更名为JPG。如果下载的时候就已经是JPG,则此步省略。
2、用ComicEnhancer Pro打开带水印的JPG,将“高亮度”设置为125,看到那神奇的效果了吗?如果希望对文字的影响尽可能小,还可以尝试将“高亮值”设置为210。
3、下面就看你高兴了,可以直接存为JPG,也可以在色彩选“16级灰度”、“8级灰度”、“4级灰度”,然后转换成PNG。灰度级数越少,图像损失越多,文件越小,16级灰度基本上肉眼看不出文字部分有任何损失,4级灰度则很明显,可以结合“曲线”或“Gamma校正”等加以改善。
㈢ java给tif格式图片加文字水印
packagecom.coderli.image;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Image;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.FileOutputStream;
importjavax.imageio.ImageIO;
importcom.sun.image.codec.jpeg.JPEGCodec;
importcom.sun.image.codec.jpeg.JPEGImageEncoder;
@SuppressWarnings("restriction")
publicfinalclassImageUtils{
publicImageUtils(){
}
/**
*打印文字水印图片
*
*@parampressText
*--文字
*@paramtargetImg--
*目标图片
*@paramfontName--
*字体名
*@paramfontStyle--
*字体样式
*@paramcolor--
*字体颜色
*@paramfontSize--
*字体大小
*@paramx--
*偏移量
*@paramy
*/
publicstaticvoidpressText(StringpressText,StringtargetImg,
StringfontName,intfontStyle,Colorcolor,intfontSize,intx,
inty){
try{
File_file=newFile(targetImg);
Imagesrc=ImageIO.read(_file);
intwidth=src.getWidth(null);
intheight=src.getHeight(null);
BufferedImageimage=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphicsg=image.createGraphics();
g.drawImage(src,0,0,width,height,null);
g.setColor(color);
g.setFont(newFont(fontName,fontStyle,fontSize));
g.drawString(pressText,width-fontSize-x,height-fontSize
/2-y);
g.dispose();
FileOutputStreamout=newFileOutputStream(targetImg);
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}catch(Exceptione){
System.out.println(e);
}
}
publicstaticvoidmain(String[]args){
pressText("bbs.coderli.com","f:/1.tiff","TimesNewRomas",Font.PLAIN,Color.BLUE,22,150,20);
}
}
这个方法里用的api是支持tiff格式的,你可以试试。
㈣ java pdf itext 水印 怎么做到 汉字水印 平铺或者换行 不想每页只插入一行水印
// 仅设置一个图片实例对象,整个PDF文档只应用一个图片对象,极大减少因为增加图片水印导致PDF文档大小增加
Image waterMarkImage = null ; //这里是图片对象,
if (waterMarkImage == null) {
waterMarkImage = Image.getInstance(path);//path 根据自己的实际情况填写。
}
// 添加水印图片,文档正文内容采用横向三列,竖向两列模式增加图片水印
for(int i = 0 ; i < 100; i ++){
for(int j = 0 ; j < 4 ; j ++ ){
waterMarkPdfContent.addImage(getWaterMarkImage(waterMarkImage,pageWidth * 0.3f * j , pageHeight * 0.05f * i));
}
}
public static Image getWaterMarkImage(Image waterMarkImage,
float xPosition, float yPosition) {
waterMarkImage.setAbsolutePosition(xPosition, yPosition);// 坐标
//waterMarkImage.setRotation(-20);// 旋转 弧度
//waterMarkImage.setRotationDegrees(-30);// 旋转 角度
waterMarkImage.scalePercent(100);// 依照比例缩放
return waterMarkImage;
}