㈠ 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;
}