CameraService.java 2.97 KB
package com.huaheng.api.erp.service;

import com.huaheng.api.erp.controller.ErpController;
import com.huaheng.common.utils.file.FileUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.netsdk.demo.module.CapturePictureModule;
import com.netsdk.demo.module.LoginModule;
import com.netsdk.lib.NetSDKLib;
import com.sun.jna.Pointer;
import org.springframework.stereotype.Service;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;

@Service
public class CameraService  {

    public AjaxResult camera(String ip, int port, String userName, String password, HttpServletResponse response){

        DisConnect connect = new DisConnect();
        HaveReConnect checkReConnect = new HaveReConnect();
        //初始化设备
        boolean init = LoginModule.init(connect, checkReConnect);
        if(!init){
            return AjaxResult.error("初始化失败");
        }
        //登录
        boolean login = LoginModule.login(ip, port, userName, password);
        if(login){
            //设置回调函数
            CapturePictureModule.setSnapRevCallBack(m_CaptureReceiveCB);
            //抓图 0 主通道
            CapturePictureModule.remoteCapturePicture(0);
            LoginModule.logout();
        }else{
            return AjaxResult.error("登录失败");
        }

        OutputStream outputStream = null;

        try {
            outputStream = response.getOutputStream();
            FileUtils.writeBytes("./Capture/my.jpg",outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return AjaxResult.success("");
    }

    public fCaptureReceiveCB m_CaptureReceiveCB = new fCaptureReceiveCB();
    public class fCaptureReceiveCB implements NetSDKLib.fSnapRev{
        BufferedImage bufferedImage = null;
        @Override
        public void invoke(NetSDKLib.LLong lLoginID, Pointer pBuf, int RevLen, int EncodeType, int CmdSerial, Pointer dwUser) {
            if(pBuf != null && RevLen > 0) {

                File path1 = new File("./Capture/");
                if (!path1.exists()) {
                    path1.mkdir();
                }

                String strFileName = path1.getAbsolutePath() + "/my.jpg";

                System.out.println("strFileName = " + strFileName);

                byte[] buf = pBuf.getByteArray(0, RevLen);
                ByteArrayInputStream byteArrInput = new ByteArrayInputStream(buf);
                try {
                    bufferedImage = ImageIO.read(byteArrInput);
                    if(bufferedImage == null) {
                        return;
                    }
                    ImageIO.write(bufferedImage, "jpg", new File(strFileName));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}