| | |
| | | } |
| | | 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; |
| | |
| | | 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; |
| | |
| | | } else { |
| | | barName = ""; |
| | | } |
| | | if(StringUtils.isBlank(barName)){ |
| | | return; |
| | | } |
| | | BufferedImage barImage = getImage(reportTemplates + barName); |
| | | BufferedImage waterDropImage = getImage(reportTemplates + waterDrop); |
| | | |
| | |
| | | |
| | | 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); |
| | |
| | | } 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); |
| | |
| | | return image; |
| | | } catch (IOException e) { |
| | | log.info("异常图片:" + path); |
| | | log.error("{}发生异常:{}",path, e); |
| | | throw new RuntimeException("获取图片资源异常", e); |
| | | } |
| | | } |