java開發圖片水印
阿新 • • 發佈:2018-11-03
今天學習的是圖片水印 記錄下來 也許以後會用的到!
package com.summer.waterpic;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* java開發圖片水印和文字水印
* @建立者
* @時間2017年7月6日
* @版本1.0
*/
public class PicWaterMark {
/**
* 列印圖片的水印
* @param markPic 水印檔案 路勁
* @param targetImg 目標檔案
* @param x 水印圖片的位置 x座標
* @param y 縱座標
*/
public static void getWaterMark (String markPic,String targetImg,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);
//讀取水印圖片
File fileMark = new File(markPic);
//將檔案轉換成圖片的物件
Image mImg = ImageIO.read(fileMark);
//水印圖片的寬高
int mwidth = mImg.getWidth(null);
int mheight = mImg.getHeight(null);
//繪製指定影象 縮放到指定矩形區域
g.drawImage(mImg, x, y, mwidth, mheight, null);
//結束對檔案物件的處理
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 (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String markPic= "C:\\Users\\Administrator\\Desktop\\array\\time\\6.jpg";
String targetImg = "C:\\Users\\Administrator\\Desktop\\array\\time\\1.jpg";
getWaterMark(markPic,targetImg,200,200);
}
}