java畫圖工具來新增水印
阿新 • • 發佈:2019-07-16
用Java程式碼給圖片加水印
不多嗶嗶,直接上程式碼:
/** * @param srcImgFile 原圖片檔案物件 * @param outFile 輸出圖片檔案物件 * @param waterMarkContent 水印內容 * @param markContentColor 水印顏色 * @param rate 字型間距 * @param x x軸位置 * @param y y軸位置 * @param font 字型 */ public static void addWaterMark(File srcImgFile, File outFile, String waterMarkContent, Color markContentColor, double rate, int x, int y, Font font) { try { // 讀取原圖片資訊 Image srcImg = ImageIO.read(srcImgFile);//檔案轉化為圖片 int srcImgWidth = srcImg.getWidth(null);//獲取圖片的寬 int srcImgHeight = srcImg.getHeight(null);//獲取圖片的高 // 加水印 BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB); // 獲取圖片緩衝區 Graphics2D g = bufImg.createGraphics(); // 建立Graphics2D畫筆物件 g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null); g.setColor(markContentColor); //根據圖片的背景設定水印顏色 g.setFont(font); //設定字型 WaterMarkUtils.MyDrawString(waterMarkContent,x,y,rate,g); // 設定字型間距加輸出 g.dispose(); // 進行處理 // 輸出圖片 FileOutputStream outImgStream = new FileOutputStream(outFile); // 建立檔案輸入流 ImageIO.write(bufImg, "jpg", outImgStream); System.out.println("新增水印完成"); outImgStream.flush(); // 重新整理檔案 outImgStream.close(); // 釋放資源 } catch (Exception e) { System.out.println("異常"); e.printStackTrace(); } }
設定字型間距
這個是在百度上找的,原貼的地址https://blog.csdn.net/zixiaomuwu/article/details/51068698
/**
* 設定字型間距加輸出
* @param str 輸出字串
* @param x x軸
* @param y y軸
* @param rate 字型間距
* @param g 畫筆物件
*/
public static void MyDrawString(String str,int x,int y,double rate,Graphics2D g){
String tempStr=new String();
int orgStringWight=g.getFontMetrics().stringWidth(str);
int orgStringLength=str.length();
int tempx=x;
int tempy=y;
while(str.length()>0)
{
tempStr=str.substring(0, 1);
str=str.substring(1, str.length());
g.drawString(tempStr, tempx, tempy);
tempx=(int)(tempx+(double)orgStringWight/(double)orgStringLength*rate);