1
0
ting.yin 2 жил өмнө
parent
commit
85728be58c

+ 5 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -1007,12 +1007,14 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 // 取第一个显示区域相对裁切图的位置
                 MarkConfigItem config = configList.get(0);
                 OriginTag tag = new OriginTag(format.format(score), config.getI(), config.getX(), config.getY());
+                //兼容比例模式,且元素在裁切坐标内
                 if (config.getX() <= 1 && config.getY() <= 1 
+                        && config.getI() <= sliceConfig.size()
                         && sliceConfig.get(config.getI() - 1).getW() > 0
                         && sliceConfig.get(config.getI() - 1).getH() > 0) {
-                    tag = new OriginTag(format.format(score), config.getI(), 
-                            config.getX() * sliceConfig.get(config.getI() - 1).getW(), 
-                            config.getY() * sliceConfig.get(config.getI() - 1).getH());
+                    tag = new OriginTag(format.format(score), config.getI(), config.getX()
+                            * sliceConfig.get(config.getI() - 1).getW(), config.getY()
+                            * sliceConfig.get(config.getI() - 1).getH());
                 }
                 originTags.add(tag);
             }

+ 8 - 4
stmms-web/src/main/java/cn/com/qmth/stmms/api/utils/ImageBuildUtil.java

@@ -27,8 +27,8 @@ public class ImageBuildUtil {
      * @throws FileNotFoundException
      * @throws IOException
      */
-    public static BufferedImage buildTagImage(BufferedImage image, List<PictureTag> tags)
-            throws FileNotFoundException, IOException {
+    public static BufferedImage buildTagImage(BufferedImage image, List<PictureTag> tags) throws FileNotFoundException,
+            IOException {
         if (tags != null && !tags.isEmpty()) {
             BufferedImage newImg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
             Graphics2D g = newImg.createGraphics();
@@ -39,8 +39,12 @@ public class ImageBuildUtil {
                     continue;
                 }
                 int fontSize = tag.getSize() > 0 ? tag.getSize() : DEFAULT_FONT_SIZE;
-                int left = Math.max(fontSize, tag.getLeft());
-                int top = Math.max(fontSize, tag.getTop());
+                if (tag.getLeft() <= 1 || tag.getTop() <= 1) {
+                    tag.setLeft(tag.getLeft() * image.getWidth());
+                    tag.setTop(tag.getTop() * image.getHeight());
+                }
+                int left = (int) Math.max(fontSize, tag.getLeft());
+                int top = (int) Math.max(fontSize, tag.getTop());
                 g.setFont(new Font(DEFAULT_FONT_NAME, Font.PLAIN, fontSize));
                 for (String content : tag.getContent()) {
                     g.drawString(content, left, top);