java 給圖片添加水印(MultipartFile )

/**
     *
     * @param file  文件
     * @param path  上傳文件路徑
     * @param folder  保存文件的文件夾
     * @return  返回文件路徑
     * @throws Exception
     */
    public static String addWatermark(MultipartFile file, String path, String folder) throws Exception {
        // 原圖位置, 輸出圖片位置, 水印文字顏色, 水印文字
        // 讀取原圖片信息
        Image srcImg = ImageIO.read(file.getInputStream());
        int srcImgWidth = srcImg.getWidth(null);
        int srcImgHeight = srcImg.getHeight(null);
        // 加水印
        BufferedImage bufImg = new BufferedImage(srcImgWidth,
                srcImgHeight,
                BufferedImage.TYPE_INT_RGB);
        //獲取 Graphics2D 對象
        Graphics2D g = bufImg.createGraphics();
        //設置繪圖區域
        g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
        //設置字體
        Font font = new Font("宋體", Font.PLAIN, 40);
        // 根據圖片的背景設置水印顏色
        g.setColor(Color.green);
        g.setFont(font);
        //獲取文字長度
        int len = g.getFontMetrics(
                g.getFont()).charsWidth("圖片來源:戒菸的李白".toCharArray(),
                0,
                "圖片來源:戒菸的李白".length());
        int x = srcImgWidth - len - 10;
        int y = srcImgHeight - 20;
        g.drawString("圖片來源:戒菸的李白", x, y);
        g.dispose();
        // 輸出圖片
        String fileSrc = path + "/" + folder + "/" + UUIDUtils.getUUID() + ".jpg";
        File waterFile = new File(path + "/" + folder);
        if(!waterFile.exists()) waterFile.mkdirs();
        FileOutputStream outImgStream = new FileOutputStream(fileSrc);
        ImageIO.write(bufImg, "png", outImgStream);
        outImgStream.flush();
        outImgStream.close();
        return fileSrc;

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章