From a4d54f771794a8ea36319c679d489180b595edfd Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 30 九月 2024 12:13:01 +0800
Subject: [PATCH] 工单取图片优化
---
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 77 ++++++++++++++++----------------------
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java | 2
2 files changed, 34 insertions(+), 45 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 88fb056..ab3b112 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -189,7 +189,7 @@
* @param workOrderNo 宸ュ崟鍙�
* @return 鏁版嵁
*/
- String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo);
+ String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception;
/**
* 宸ュ崟璁惧鐐规挱鑾峰彇涓�甯у浘鐗囷紝骞朵繚瀛樺埌鏁版嵁搴�
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index f8549e6..81e0698 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -56,7 +56,10 @@
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import javax.imageio.ImageIO;
import javax.swing.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -760,7 +763,7 @@
@Override
- public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) {
+ public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
String result = HttpUtils.sendGet(url);
log.error("鎷垮埌鍙栨祦鍝嶅簲缁撴灉锛�" + result);
@@ -771,51 +774,37 @@
JSONObject data = (JSONObject) wvpResult.getData();
String rtspUrl = data.getString("rtsp"); // 鍙栧湴鍧�
log.error("鐩爣鍦板潃锛�" + rtspUrl);
+ FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
if (StringUtils.hasText(rtspUrl)) {
try {
- FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
-// grabber.setOption("rtsp_transport", "tcp"); // 浣跨敤tcp鐨勬柟寮忥紝涓嶇劧浼氫涪鍖呭緢涓ラ噸
- grabber.setImageWidth(960);
- grabber.setImageHeight(540);
+ grabber.setOption("rtsp_transport", "tcp"); // 浣跨敤tcp鐨勬柟寮忥紝涓嶇劧浼氫涪鍖呭緢涓ラ噸
+ grabber.setImageWidth(1920);
+ grabber.setImageHeight(1080);
+ grabber.setFrameRate(25);
grabber.start();
- CanvasFrame canvasFrame = new CanvasFrame("姝h寕");// 鍒涘缓绐楀彛
- canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 璁剧疆绐楀彛鍏抽棴绋嬪簭鏄惁涔熻窡闅忓叧闂�
- canvasFrame.setAlwaysOnTop(true);
- OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
- int ex = 0;
- while (true) {
- if (ex > 1) {
- break;
+ Frame frame = grabber.grabFrame();
+ if (frame != null) {
+ //杞崲鍥惧儚
+ Java2DFrameConverter converter = new Java2DFrameConverter();
+ BufferedImage srcImage = converter.getBufferedImage(frame);
+ if (srcImage != null) {
+ imgUrl = workOrderNo + "_" + IdUtils.fastSimpleUUID() + ".png";
+ // 鐢熸垚鍥剧墖璺緞
+ String imgPath = PlatformConfig.getProfile() + "/" + imgUrl;
+ System.out.println("鍥剧墖淇濆瓨鍦板潃锛�" + imgPath);
+ imgUrl = Constants.RESOURCE_PREFIX + "/" + imgUrl;
+ //鍒涘缓鏂囦欢
+ File file = new File(imgPath);
+ //杈撳嚭鏂囦欢
+ ImageIO.write(srcImage, "png", file);
}
- Frame frame = grabber.grabImage();
- canvasFrame.showImage(frame);
- //绋嬪簭鍒拌繖閲屽叾瀹炲凡缁忓疄鐜颁簡棰勮鐨勫姛鑳戒簡锛屼笅闈㈢殑鏂规硶灏辨槸灏嗘祦淇濆瓨鎴愬浘鐗�
-
- //opencv_core.Mat
- Mat mat = converter.convertToMat(frame);
-
- imgUrl = workOrderNo + "_" + IdUtils.fastSimpleUUID() + ".png";
- // 鐢熸垚鍥剧墖璺緞
- String imgPath = PlatformConfig.getProfile() + "/" + imgUrl;
- System.out.println("鍥剧墖淇濆瓨鍦板潃锛�" + imgPath);
- imgUrl = Constants.RESOURCE_PREFIX + "/" + imgUrl;
-
- opencv_imgcodecs.imwrite(imgPath, mat);
-
- ex++;
- try {
- Thread.sleep(1000);
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- } // 1000姣鍒锋柊涓�娆″湒鍍�
}
- grabber.stop(); // 鍋滄鎹曡幏
- grabber.release(); // 閲婃斁璧勬簮
} catch (IOException e) {
e.printStackTrace();
+ } finally {
+ grabber.stop(); // 鍋滄鎹曡幏
+ grabber.close(); // 閲婃斁璧勬簮
}
}
}
@@ -823,7 +812,7 @@
}
@Override
- public void saveFrameImgByDevice(String deviceId, String channelId, String workOrderNo) {
+ public void saveFrameImgByDevice (String deviceId, String channelId, String workOrderNo){
String url = String.format(this.rtspServer + "/api/play/start/%s/%s", deviceId, channelId);
String result = HttpUtils.sendGet(url);
WVPResult wvpResult = JSON.parseObject(result, WVPResult.class);
@@ -884,13 +873,13 @@
}
@Override
- public List<DeviceInfoVO> hasErrorWorkOrderList(Date start, Date end) {
+ public List<DeviceInfoVO> hasErrorWorkOrderList (Date start, Date end){
List<DeviceInfoVO> list = baseMapper.hasErrorWorkOrderList(start, end);
return list;
}
@Override
- public void updateImgById(Integer workOrderId, String imgPath) {
+ public void updateImgById (Integer workOrderId, String imgPath){
new LambdaUpdateChainWrapper<>(baseMapper)
.eq(WorkOrder::getId, workOrderId)
.set(WorkOrder::getYwCheckResult, imgPath)
@@ -898,7 +887,7 @@
}
@Override
- public Result processImg(String workOrderNo) {
+ public Result processImg (String workOrderNo){
WorkOrder workOrder = new LambdaQueryChainWrapper<>(baseMapper)
.eq(WorkOrder::getWorkOrderNo, workOrderNo)
.one();
@@ -939,7 +928,7 @@
}
@Override
- public Result detailByNo(String workOrderNo) {
+ public Result detailByNo (String workOrderNo){
WorkOrderDetailVO workOrder = baseMapper.detailByNo(workOrderNo);
// 鏄惁鎶ュ
boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
@@ -961,7 +950,7 @@
}
@Override
- public List<WorkOrderVO> export(WorkOrderExportQuery query) {
+ public List<WorkOrderVO> export (WorkOrderExportQuery query){
query.setUnitId(SecurityUtils.getUnitId());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (query.getStart() == null) {
--
Gitblit v1.8.0