[测评系统]--测评系统核心代码库
zhijie
2021-06-08 56c8bc18def3992259da50948119259f571d04ee
src/main/java/com/ots/project/tool/exam/ImageUtil.java
@@ -85,6 +85,15 @@
        }
        return width;
    }
    /**
     * 创建水滴图片
     * @param key
     * @param waterDrop
     * @param scorceF
     * @param member_id
     * @param suffixDate
     */
    public static void creteWaterDropPic(String key, String waterDrop, float scorceF, String member_id, String suffixDate) {
        int CANVAS_W = 1000; 
        int CANVAS_H = 96; 
@@ -95,10 +104,24 @@
        int barImageY = 30; 
        float scorce =  scorceF / 100;
        if (key.indexOf("ResponseFidelityDiagnosis") != -1) {
            CANVAS_H = 105;
           CANVAS_H = 105;
            waterDropImageX = 2;
            scorce100 = 812;
            barImageY = 5;
        }
        if (key.indexOf("ResponseFidelityDiagnosis_V2") != -1) {
            CANVAS_H = 400;
            waterDropImageX = -30;
            scorce100 = 800;
            barImageY = 5;
            waterDropImageY = 0;
        }
        if (key.indexOf("ResponseFidelityDiagnosisSAQGs") != -1) {
            CANVAS_H = 400;
            waterDropImageX = -30;
            scorce100 = 800;
            barImageY = 5;
            waterDropImageY = 0;
        }
        if (key.indexOf("RuilinTestResultValidityDiagnosisContext") != -1) {
            CANVAS_H = 105;
@@ -130,6 +153,9 @@
        } else {
            barName = "";
        }
        if(StringUtils.isBlank(barName)){
           return;
        }
        BufferedImage barImage = getImage(reportTemplates + barName);
        BufferedImage waterDropImage = getImage(reportTemplates + waterDrop);
        
@@ -153,7 +179,11 @@
        
        int waterDropOffsetX = setWaterDrop(waterDrop, waterDropImageX, waterDropImageY, scorce100, scorce, g2d, waterDropImage);
        
        setText(String.valueOf(Math.round(scorceF)), g2d, waterDropOffsetX);
        if (key.indexOf("ResponseFidelityDiagnosis_V2") != -1 || key.indexOf("ResponseFidelityDiagnosisSAQGs") != -1) {
           setTextV2(String.valueOf(Math.round(scorceF)), g2d, waterDropOffsetX);
        }else{
           setText(String.valueOf(Math.round(scorceF)), g2d, waterDropOffsetX);
        }
        g2d.dispose();
        
        outputBarWaterImage(key + "_" + member_id + "_" + String.valueOf(scorceF)+"_" + suffixDate, image);
@@ -165,6 +195,25 @@
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private static void setTextV2(String value, Graphics2D g2d, int waterDropOffsetX) {
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2d.setColor(Color.BLACK);
        Font font = new Font("", Font.BOLD, 16);
        g2d.setFont(font);
        int numX = 0;
        int numY = 17;
        if (value.length() == 2) {
            numX = 36;
        } else if (value.length() == 3) {
            numX = 32;
        } else if (value.length() == 1) {
            numX = 42;
        }
        g2d.drawString(value, numX + waterDropOffsetX, numY);
    }
    private static void setText(String value, Graphics2D g2d, int waterDropOffsetX) {
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
@@ -207,6 +256,7 @@
            return image;
        } catch (IOException e) {
            log.info("异常图片:" + path);
            log.error("{}发生异常:{}",path, e);
            throw new RuntimeException("获取图片资源异常", e);
        }
    }