Idea打包dll到jar包

参考IntelliJ Idea+javafx+第三方库+dll 打包为jar

代码

import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

public class Main {
    private static String rtsp_62 = "rtsp://admin:密码@192.168.0.62:554/stream0";
    private static String rtsp_64 = "rtsp://admin:密码@192.168.0.64:554/stream0";
    private static String rtsp_93 = "rtsp://admin:密码@192.168.0.93:554/stream0";
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    private static String dir = "D:/VideoRec/Image";
    private static String nginxServer = "http://192.168.0.56:8999";

    static {
        try {

            // getClass().getClassLoader().getResourceAsStream(arg0);
            // System.out.println("MainTest.class.getClass()"+MainTest.class.getClass().toString());
            InputStream in = Main.class.getResourceAsStream("opencv_java440.dll");   //dll文件位置

            System.out.println("Main.class.getClass()" + in);

            File ffile = new File("");
            String filePath = null;
            filePath = ffile.getAbsolutePath() + File.separator + "opencv_java440.dll";
            System.out.println("filePath opencv_java410.dll is " + filePath);
            File dll = new File(filePath);
            FileOutputStream out = new FileOutputStream(dll);   //缓存dll位置

            int i;
            byte[] buf = new byte[1024];
            try {
                while ((i = in.read(buf)) != -1) {
                    out.write(buf, 0, i);
                }
            } finally {
                in.close();
                out.close();
            }
            System.load(dll.getAbsolutePath());//
            dll.deleteOnExit();

        } catch (Exception e) {
            System.err.println("load jni error!");
        }
    }

    public static void main(String[] args) {
        // System.load(ClassLoader.getSystemResource("opencv_java440.dll").getPath());
        System.out.println("load  opencv_java440.dll  success");
    }

    private static void openVideo64() {
        VideoCapture capture = null;
        try {
            // System.load(ClassLoader.getSystemResource("static/opencv_java440.dll").getPath());
            capture = new VideoCapture();
            capture.open(rtsp_64);
            int height = (int) capture.get(Videoio.CAP_PROP_FRAME_HEIGHT);
            int width = (int) capture.get(Videoio.CAP_PROP_FRAME_WIDTH);
            if (height == 0 || width == 0) {
                throw new Exception("camera not found!");
            }
            Mat capImg = new Mat();
            Mat temp = new Mat();
            while (true) {
                capture.read(capImg);
                Imgproc.cvtColor(capImg, temp, Imgproc.COLOR_RGB2GRAY);
                String path = dir + "/" + sdf.format(new Date()) + ".jpg";
                Imgcodecs.imwrite(path, temp);
                // sendToWeb("2", path);
                // Thread.sleep(300);
            }
        } catch (Exception e) {
            System.out.println("异常:" + e.toString() + " --- " + Arrays.toString(e.getStackTrace()));
        } finally {
            if (capture != null && capture.isOpened()) {
                System.out.println("-----capture--done--");
                capture.release();
            }
        }
    }
}

``
posted @ 2020-12-05 17:59  一只桔子2233  阅读(1404)  评论(0编辑  收藏  举报