java實(shí)現(xiàn)圖片的水印和嵌套圖片

java.awt實(shí)現(xiàn)在準(zhǔn)考證模板上寫(xiě)入考生信息生成圖片

準(zhǔn)考證模板.jpg
結(jié)果圖.jpeg

1、上代碼

    /**圖片處理方法
     * @param srcImgPath 源圖片路徑
     * @param headImg 頭像路徑
     * @param tarImgPath 保存的圖片路徑
     * @param markContentColor 水印顏色
     * @param font 水印字體
     * @param name 考生信息(姓名)
     * @param age 考生信息(性別)
     * @param idcard 考生信息(證件號(hào))
     * @param posi 考生信息(考點(diǎn))
     * @param subject 考生信息(科目)
     * @param time 考生信息(考試時(shí)間)
     * @param examNo 考生信息(準(zhǔn)考證號(hào))
     */
    public void addWaterMark(String srcImgPath,String headImg, String tarImgPath,
                             Color markContentColor,Font font,String name,String age,
                             String idcard,String posi,String subject,String time,String examNo) {

        try {
            // 讀取原圖片信息
            File srcImgFile = new File(srcImgPath);//得到文件(底圖)
            Image srcImg = ImageIO.read(srcImgFile);//文件轉(zhuǎn)化為圖片(底圖)
            File headFile = new File(headImg);//得到文件(頭像)
            Image headSrcImg = ImageIO.read(headFile);//文件轉(zhuǎn)化為圖片(頭像)
            //獲取圖片寬高
            int srcImgWidth = srcImg.getWidth(null);//獲取圖片的寬
            int srcImgHeight = srcImg.getHeight(null);//獲取圖片的高
            // 創(chuàng)建在內(nèi)存里的圖像緩沖區(qū)對(duì)象
            BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = bufImg.createGraphics();//在緩沖區(qū)創(chuàng)建圖形
            //底圖生成+位置設(shè)置(設(shè)置參數(shù)圖片的原尺寸)
            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);// 繪制底圖模板
            //考生信息字體設(shè)置
            g.setColor(markContentColor); //根據(jù)圖片的背景設(shè)置水印顏色
            g.setFont(font);              //設(shè)置字體
            //頭像生成+位置設(shè)置     //水平 //圖片大?。ㄋ?在底圖的某個(gè)位置)
            g.drawImage(headSrcImg,480,29,108,125,null);// 繪制頭像

            //設(shè)置水印的坐標(biāo)(考生信息水平位置設(shè)置)
//            int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);
//            int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);
            g.drawString(name, 94, 117);  //畫(huà)出水印(姓名)
            g.drawString(age, 366, 117);  //畫(huà)出水印(性別)
            g.drawString(idcard, 94, 153);  //畫(huà)出水印(身份證號(hào)碼)
            g.drawString(posi, 94, 188);  //畫(huà)出水印(考試地點(diǎn))
            g.drawString(subject, 366, 188);  //畫(huà)出水印(科目)
            g.drawString(time, 523, 188);  //畫(huà)出水印(考試時(shí)間)
            g.drawString(examNo, 366, 151);  //畫(huà)出水印(準(zhǔn)考證號(hào)碼)
            g.dispose();//對(duì)bufImg對(duì)象設(shè)置的參數(shù)進(jìn)行提交!·
            // 輸出圖片
            FileOutputStream outImgStream = new FileOutputStream(tarImgPath);
            ImageIO.write(bufImg, "jpg", outImgStream);
            System.out.println("添加水印完成");
            outImgStream.flush();
            outImgStream.close();

        } catch (Exception e) {
            // TODO: handle exception
        }
    }

2、主線程測(cè)試

  public static void main(String[] args) {
        //水印字體,Font.PLAIN可以自定義設(shè)置
        Font font = new Font("微軟雅黑", Font.PLAIN, 15); 
        String srcImgPath="G:/img/準(zhǔn)考證模板.jpg"; //源圖片地址
        String headImg="G:/img/頭像.jpeg"; //頭像地址
        String tarImgPath="G:/img/結(jié)果圖.jpeg"; //待存儲(chǔ)的地址
        String name="V";  //水印內(nèi)容
        String age="男";  //水印內(nèi)容
        String idcard="110133199508080808";  //水印內(nèi)容
        String posi="和平二十中學(xué)";  //水印內(nèi)容
        String examNo="G3200910000130006";  //水印內(nèi)容
        String subject="subject";  //水印內(nèi)容
        String time="2020-10-27";  //水印內(nèi)容
        Color color=new Color(0,25,25,225);//水印圖片色彩以及透明度(黑色)
        new WaterMarkUtils().addWaterMark(srcImgPath,headImg, tarImgPath, color,
                 font,name,age,idcard,posi,subject,time,examNo);
    }

BufferedImage、Image、Graphics類(lèi)介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容