REV:拍照抓图
This commit is contained in:
@@ -8,6 +8,10 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -91,81 +95,59 @@ public class HikvisionSnapshotUtil {
|
||||
public short wPicQuality;
|
||||
}
|
||||
|
||||
//HCNetSDK 抓图,图片路径允许指定,不指定则走配置
|
||||
public static SdkResponse 截图(String imageName) {
|
||||
String imagePath = "D://vehicle/" + DateUtil.thisYear();
|
||||
public static void sync截图(String imageName, String taskCode) {
|
||||
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();
|
||||
int userId = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo);
|
||||
if (userId < 0) {
|
||||
System.err.println("[SDK] 登录失败");
|
||||
log.warn("[SDK] 登录失败");
|
||||
HCNetSDK.INSTANCE.NET_DVR_Cleanup();
|
||||
return SdkResponse.requestFail("[SDK] 登录失败");
|
||||
return;
|
||||
}
|
||||
|
||||
NET_DVR_JPEGPARA jpegPara = new NET_DVR_JPEGPARA();
|
||||
// D1
|
||||
jpegPara.wPicSize = 2;
|
||||
// 一般质量
|
||||
jpegPara.wPicQuality = 0;
|
||||
//命名规则:任务号+载具号+时间.jpg
|
||||
boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
||||
if (!result) {
|
||||
result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
||||
|
||||
try {
|
||||
boolean result = HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(userId, channel, jpegPara, sFileUrl);
|
||||
if (result) {
|
||||
System.out.println("[SDK] 抓图成功,保存为 snapshot_sdk.jpg");
|
||||
log.info("[SDK] 抓图成功: " + sFileUrl);
|
||||
} 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