zhanghua
2022-12-14 c96ab96cb0243e197c5d6603312dfd06b3b15ebb
报警图片加红色标注框
1个文件已修改
2个文件已添加
64 ■■■■■ 已修改文件
ycl-platform/src/main/java/com/ycl/dto/video/AlarmObject.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/dto/video/ObjectRect.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/dto/video/AlarmObject.java
New file
@@ -0,0 +1,14 @@
package com.ycl.dto.video;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class AlarmObject {
    @JsonProperty("ObjectRect")
    List<ObjectRect> objectRect;
}
ycl-platform/src/main/java/com/ycl/dto/video/ObjectRect.java
New file
@@ -0,0 +1,20 @@
package com.ycl.dto.video;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class ObjectRect {
    @JsonProperty("H")
    public Integer h;
    @JsonProperty("W")
    public Integer w;
    @JsonProperty("X")
    public Integer x;
    @JsonProperty("Y")
    public Integer y;
}
ycl-platform/src/main/java/com/ycl/service/video/impl/VideoAlarmReportServiceImpl.java
@@ -2,11 +2,10 @@
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.dto.video.AlarmDataParam;
import com.ycl.dto.video.AlarmParam;
import com.ycl.dto.video.CameraInfParam;
import com.ycl.dto.video.*;
import com.ycl.entity.video.VideoAlarmReport;
import com.ycl.mapper.video.VideoAlarmReportMapper;
import com.ycl.service.caseHandler.IViolationsService;
@@ -15,8 +14,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import javax.xml.bind.DatatypeConverter;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -61,7 +65,27 @@
                byte[] data = DatatypeConverter.parseBase64Binary(alarmParam.getPicData());
                InputStream inputStream = new ByteArrayInputStream(data);
                try {
                    if (!StringUtils.isEmpty(alarmParam.getAlarmData().getAlarmObject().toString())) {
                        String alarmObject = JSON.toJSONString(alarmParam.getAlarmData().getAlarmObject());
                        if (!StringUtils.isEmpty(alarmObject)) {
                            BufferedImage image = ImageIO.read(inputStream);
                            Graphics2D g2 = (Graphics2D)image.getGraphics();
                            g2.setColor(Color.RED);
                            g2.setStroke(new BasicStroke(3.0f));
                            List<AlarmObject> alarmObjects = JSON.parseArray(alarmObject, AlarmObject.class);
                            alarmObjects.forEach(o -> {
                                o.getObjectRect().forEach(rect -> {
                                    g2.drawRect(rect.getX(), rect.getY(), rect.getW(), rect.getH());
                                });
                            });
                            ByteArrayOutputStream os = new ByteArrayOutputStream();
                            ImageIO.write(image, extension, os);
                            inputStream = new ByteArrayInputStream(os.toByteArray());
                        }
                    }
                    picData = mediaFileUtil.savePicture(inputStream, extension);
                } catch (Exception e) {
                    e.printStackTrace();