Java開發文字水印
阿新 • • 發佈:2018-11-03
這個跟上次的圖片水印差不多,全部封裝在一個方法裡,然後使用main方法測試,在本地生成圖片就可以看到效果了
效果圖
/**
* 列印文字水印
*
* @param text
* 文字內容
* @param targetImg
* 需要被打水印的圖片
* @param fontName
* 字型名
* @param fontStyle
* 字型樣式
* @param fontSize
* 字型大小
* @param x
* 座標
* @param y
* 座標
* @return void
*/
public static void getTextMark(String text, String targetImg, String fontName, int fontStyle, int fontSize, int x,
int y) {
// 例項化需要被打水印的圖片
File file = new File(targetImg);
try {
// 將檔案轉換成圖片的物件
Image img = ImageIO.read(file);
// 獲取圖片的寬度與高度
int width = img.getWidth(null);
int height = img.getHeight(null);
// 將圖片載入到記憶體中
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
// 繪製圖片
Graphics g = image.createGraphics();
// 繪製指定影象 縮放到指定矩形區域 這裡需要從0 0 座標開始
g.drawImage(img, 0, 0, width, height, null);
//設定字型顏色
g.setColor(Color.ORANGE);
//設定字型樣式
g.setFont(new Font(fontName,fontStyle,fontSize));
//打水印
g.drawString(text, x, y);
//// 結束對檔案物件的處理
g.dispose();
// 獲取檔案路勁
String pathName = file.getParentFile().getAbsolutePath();
// 給檔案命名
String fileName = pathName + "/" + new Date().getTime() + ".jpg";
System.out.println(fileName);
// 輸出列印好水印的檔案
FileOutputStream fos = new FileOutputStream(fileName);
// JPEGCodec 用來建立一個和指定輸出流關聯
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(image);
// 關閉流
fos.close();
System.out.println("文字水印列印成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
main方法測試
public static void main(String[] args) {
String text = "晚安各位!";
String textImg = "C:\\Users\\Administrator\\Desktop\\array\\time\\3.jpg";
getTextMark(text,textImg,"微軟雅黑",16,45,100,200);
}