5.海康威视-Spring boot下实现抓图并保存

1. 配置yml文件

在yml文件中配置保存文件的地址

# 海康配置
hksetting:
  image:
    # 抓取图片上传路径
    dvrPicSavePath: F://ideaworkspace/hk-project/dvr-pic

2. 抓图实现方式

  1. 创建图片结构体:HCNetSDK.NET_DVR_JPEGPARA
    结构体信息:
//图片质量
public static class NET_DVR_JPEGPARA extends Structure {
	/*注意:当图像压缩分辨率为VGA时,支持0=CIF, 1=QCIF, 2=D1抓图,
	当分辨率为3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p
	仅支持当前分辨率的抓图*/
	public short	wPicSize;				/* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/
	public short	wPicQuality;			/* 图片质量系数 0-最好 1-较好 2-一般 */
}

在这里插入图片描述

  1. 创建文件名称
  2. 调用抓图方法: NET_DVR_CaptureJPEGPicture
    在这里插入图片描述
/**
 * 设备抓图(无预览)
 * 单帧设备抓取保存的图片为JPG,具体注意问题需要详细查看【设备网络sdk使用手册】
 * @param lUserID: 登录设备的id
 * @param lChannel: 设备通道
 * @param lPicSize: 图片大小
 * @param lPicQuality: 图片质量
 * @param sPicbuf: 图片保存路径
 * @return
 */
public String captureJPEGPicture(int lUserID, int lChannel, int lPicSize, int lPicQuality, String sPicbuf)
{
        NativeLong nlUserID = new NativeLong(lUserID);
        NativeLong nChannel = new NativeLong(lChannel);
        HCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new HCNetSDK.NET_DVR_JPEGPARA();
        lpJpegPara.wPicSize = (short)lPicSize;
        lpJpegPara.wPicQuality = (short)lPicQuality;
        // 参数必须写入到结构体,否则在保存图片的时候异常图片
		lpJpegPara.write();
		// 创建文件名称
		String datePath = sPicbuf+"/"+DateUtils.dateTime();
		// 判断文件夹是否创建
		File file = new File(datePath);
		if (!file.exists()){
			file.mkdirs();
		}
		// 文件名称
		String imageName = DateUtils.fullDateTime()+".jpg";
		// 全路径
		String path = datePath+"/"+imageName;
		// 开始抓图
        if (!hCNetSDK.NET_DVR_CaptureJPEGPicture(nlUserID, nChannel, lpJpegPara, path))
        {
            return "{失败编码:"+hCNetSDK.NET_DVR_GetLastError()+"}";
        }else {
            return "抓图成功!";
        }
}

3. 接口层实现

@RestController
public class DeviceController {
	@Value("${hksetting.image.dvrPicSavePath}")
	private String dvrPicSavePath;

	HIKDevice hikDevice;

	// 初始化设备调用实现类
	DeviceController() {
		if (hikDevice == null) {
			hikDevice = new HIKDevice();
		}
	}
	
	@ApiOperation(value = "设备抓图", notes = "设备抓图")
	@GetMapping(value = "/driverDVRPic")
	@ResponseBody
	public Object driverDVRPic(@RequestBody JSONObject json){
		int lUserID = Integer.parseInt(json.get("lUserID").toString());
		int lChannel = Integer.parseInt(json.get("lChannel").toString());
		int lPicSize = Integer.parseInt(json.get("lPicSize").toString());
		int lPicQuality = Integer.parseInt(json.get("lPicQuality").toString());
		System.out.println(dvrPicSavePath);
		String msg = hikDevice.captureJPEGPicture(lUserID, lChannel, lPicSize, lPicQuality, dvrPicSavePath);
		return ResponseUtil.ok(msg);
	}
}

4. 通过Postman调用测试

  1. 获取设备登录id与设备通道
    注册登录的实现参考文章:4.海康威视-Springboot下实现注册与注销
  2. 测试抓图方法
    在这里插入图片描述
    抓图成功!
    在这里插入图片描述
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个基于Spring框架的开发框架,可以简化Java应用程序的开发并提供开箱即用的功能。而海康威视是一家专注于视频监控领域的技术公司,提供了一系列的视频监控产品和解决方案。 要实现Spring Boot海康威视的整合,需要以下几个步骤: 1. 引入依赖:在Spring Boot的pom.xml文件中,引入海康威视相关的依赖。例如,可以使用海康威视SDK提供的jar包,通过Maven或Gradle进行依赖管理。 2. 配置参数:在Spring Boot的配置文件(application.properties或application.yml)中,添加海康威视相关的配置参数。例如,可以设置设备的IP地址、端口号、用户名、密码等。 3. 编写代码:在Spring Boot应用程序中,编写代码来实现海康威视设备的交互。可以使用SDK提供的API来实现视频监控功能,例如获取实时视频流、控制云台、抓拍图片等。 4. 注册Bean:如果需要将海康威视相关的组件和功能注入到Spring容器中,可以在配置类中,使用@Bean注解注册相关的Bean。 5. 测试运行:编写测试用例,验证整合是否成功。可以通过调用海康威视的API,获取视频流或实现其他功能。运行Spring Boot应用程序,检查是否能够与海康威视设备正常交互。 总结而言,整合Spring Boot海康威视需要引入相关的依赖,配置参数,编写代码来实现交互功能,注册Bean以及进行测试运行。通过以上步骤,就可以在Spring Boot应用程序中实现海康威视设备的整合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值