1. 程式人生 > >java畫圖工具來新增水印

java畫圖工具來新增水印

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