REV:拍照抓图
This commit is contained in:
@@ -8,6 +8,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -91,81 +95,59 @@ public class HikvisionSnapshotUtil {
|
|||||||
public short wPicQuality;
|
public short wPicQuality;
|
||||||
}
|
}
|
||||||
|
|
||||||
//HCNetSDK 抓图,图片路径允许指定,不指定则走配置
|
public static void sync截图(String imageName, String taskCode) {
|
||||||
public static SdkResponse 截图(String imageName) {
|
|
||||||
String imagePath = "D://vehicle/" + DateUtil.thisYear();
|
|
||||||
if (StringUtils.isEmpty(imageName)) {
|
if (StringUtils.isEmpty(imageName)) {
|
||||||
return SdkResponse.requestFail("图片名称未知");
|
log.warn("图片名称未定义");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
String sFileUrl = imagePath + "\\" + imageName;
|
|
||||||
if (!HCNetSDK.INSTANCE.NET_DVR_Init()) {
|
|
||||||
|
|
||||||
return SdkResponse.requestFail("[SDK] 初始化失败");
|
LocalDate now = LocalDate.now();
|
||||||
|
String datePath = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
|
||||||
|
String imagePath = "C:" + File.separator + "software" + File.separator + "wms" + File.separator + "images" + File.separator + datePath;
|
||||||
|
|
||||||
|
File dir = new File(imagePath);
|
||||||
|
if (!dir.exists()) {
|
||||||
|
dir.mkdirs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String sFileUrl = imagePath + File.separator + imageName + "_" + taskCode + ".jpg";
|
||||||
|
|
||||||
|
if (!HCNetSDK.INSTANCE.NET_DVR_Init()) {
|
||||||
|
log.warn("[SDK] 初始化失败");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30();
|
NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30();
|
||||||
int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo);
|
int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo);
|
||||||
if (userId < 0) {
|
if (userId < 0) {
|
||||||
System.err.println("[SDK] 登录失败");
|
log.warn("[SDK] 登录失败");
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
||||||
return SdkResponse.requestFail("[SDK] 登录失败");
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA();
|
NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA();
|
||||||
// D1
|
|
||||||
jpegPara.wPicSize = 2;
|
jpegPara.wPicSize = 2;
|
||||||
// 一般质量
|
|
||||||
jpegPara.wPicQuality = 0;
|
jpegPara.wPicQuality = 0;
|
||||||
//命名规则:任务号+载具号+时间.jpg
|
|
||||||
boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
try {
|
||||||
if (!result) {
|
boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
||||||
result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
|
||||||
if (result) {
|
if (result) {
|
||||||
System.out.println("[SDK] 抓图成功,保存为 snapshot_sdk.jpg");
|
log.info("[SDK] 抓图成功: " + sFileUrl);
|
||||||
} else {
|
} else {
|
||||||
System.err.println("[SDK] 抓图失败");
|
// 失败重试一次
|
||||||
|
result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
||||||
|
if (result) {
|
||||||
|
log.info("[SDK] 抓图成功(第二次尝试): " + sFileUrl);
|
||||||
|
} else {
|
||||||
|
log.warn("[SDK] 抓图失败: " + sFileUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
HCNetSDK.INSTANCE.NET_DVR_Logout(userId);
|
||||||
|
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
||||||
}
|
}
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Logout(userId);
|
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
|
||||||
return result ? SdkResponse.requestOk() : SdkResponse.requestFail("[SDK] 最终抓图失败");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sync截图(String imageName, String taskCode) {
|
|
||||||
if (StringUtils.isEmpty(imageName)) {
|
|
||||||
log.warn("图片名称未定义");
|
|
||||||
}
|
|
||||||
String imagePath = HikvisionSnapshotUtil.path + DateUtil.thisYear();
|
|
||||||
String sFileUrl = imagePath + "\\" + imageName + "_" + taskCode;
|
|
||||||
String newFileUrl = imagePath + "\\" + imageName;
|
|
||||||
if (!HCNetSDK.INSTANCE.NET_DVR_Init()) {
|
|
||||||
|
|
||||||
}
|
|
||||||
NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30();
|
|
||||||
int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo);
|
|
||||||
if (userId < 0) {
|
|
||||||
log.warn("[SDK] 登录失败");
|
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
|
||||||
}
|
|
||||||
NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA();
|
|
||||||
// D1
|
|
||||||
jpegPara.wPicSize = 2;
|
|
||||||
// 一般质量
|
|
||||||
jpegPara.wPicQuality = 0;
|
|
||||||
//命名规则:任务号+载具号+时间.jpg
|
|
||||||
try {
|
|
||||||
boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
|
||||||
if (!result) {
|
|
||||||
result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
|
||||||
if (result) {
|
|
||||||
boolean result2 = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, newFileUrl);
|
|
||||||
log.info("[SDK] 抓图成功" + imagePath + ":" + imageName);
|
|
||||||
} else {
|
|
||||||
log.warn("[SDK] 抓图失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Logout(userId);
|
|
||||||
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user