[测评系统]--测评系统核心代码库
linzhijie
2021-06-02 880bf98e33e0143a66a56ae781c470e4b39fbdd1
src/main/java/com/ots/project/tool/exam/ImageUtil.java
@@ -95,10 +95,17 @@
        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("RuilinTestResultValidityDiagnosisContext") != -1) {
            CANVAS_H = 105;
@@ -130,6 +137,9 @@
        } else {
            barName = "";
        }
        if(StringUtils.isBlank(barName)){
           return;
        }
        BufferedImage barImage = getImage(reportTemplates + barName);
        BufferedImage waterDropImage = getImage(reportTemplates + waterDrop);
        
@@ -153,7 +163,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) {
           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 +179,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 +240,7 @@
            return image;
        } catch (IOException e) {
            log.info("异常图片:" + path);
            log.error("{}发生异常:{}",path, e);
            throw new RuntimeException("获取图片资源异常", e);
        }
    }