1. 程式人生 > >java開發圖片水印

java開發圖片水印

今天學習的是圖片水印 記錄下來 也許以後會用的到!

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