diff --git a/pom.xml b/pom.xml index da8a7a7..19f1c9c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.aohe twain-service - 0.1.5 + 0.1.6 8 diff --git a/src/main/java/org/aohe/Main.java b/src/main/java/org/aohe/Main.java index 67560ed..3b46447 100644 --- a/src/main/java/org/aohe/Main.java +++ b/src/main/java/org/aohe/Main.java @@ -1,5 +1,6 @@ package org.aohe; +import cn.hutool.core.net.NetUtil; import com.formdev.flatlaf.FlatDarculaLaf; import io.github.sanyarnd.applocker.AppLocker; import lombok.extern.slf4j.Slf4j; @@ -21,9 +22,8 @@ public class Main { private static final String JAVA_IO_TMPDIR = System.getProperty("java.io.tmpdir"); public static void main(String[] args) throws Exception { - AppLocker locker = AppLocker.create("aoheSaneServiceLock").setPath(Paths.get(JAVA_IO_TMPDIR)).build(); + AppLocker locker = AppLocker.create("AoheSaneServiceLock").setPath(Paths.get(JAVA_IO_TMPDIR)).build(); FlatDarculaLaf.setup(); - //UIManager.setLookAndFeel(new FlatDarculaLaf()); try { locker.lock(); }catch (Exception e){ @@ -32,7 +32,7 @@ public class Main { log.error("程序已被其他应用占用"); System.exit(0); } - log.info("启动成功"); + log.info("启动中...."); SocketUtils.start(SocketEnum.CAM_SOCKET); Control.WEBCAM_SHOW_TASK = new WebcamShowTask(); Control.WEBCAM_SHOW_TASK.start(); @@ -40,6 +40,18 @@ public class Main { watchDog.setDaemon(true); watchDog.start(); TrayFrameUtf8.initSystemTrayUTF8(); + StartLog(); + } + + private static void StartLog() { + StringBuilder buffer = new StringBuilder(); + buffer.append("WebSocket 启动完成 \n"); + buffer.append("---------------------------------------------------------------\n"); + for(String ip : NetUtil.localIpv4s()){ + buffer.append(" ws://").append(ip).append(":").append(SocketEnum.SCAN_SOCKET.getPort()).append("\n"); + } + buffer.append("---------------------------------------------------------------\n"); + log.info(buffer.toString()); } diff --git a/src/main/java/org/aohe/web/CamSocketServer.java b/src/main/java/org/aohe/web/CamSocketServer.java index e3db936..d7b83b9 100644 --- a/src/main/java/org/aohe/web/CamSocketServer.java +++ b/src/main/java/org/aohe/web/CamSocketServer.java @@ -60,7 +60,7 @@ public class CamSocketServer extends SocketServer { @Override public void onStart() { - log.info("Server started!"); + log.info("CamSocketServer started!"); setConnectionLostTimeout(0); setConnectionLostTimeout(100); diff --git a/src/main/java/org/aohe/web/SocketServer.java b/src/main/java/org/aohe/web/SocketServer.java index d2f5f2f..ad31eec 100644 --- a/src/main/java/org/aohe/web/SocketServer.java +++ b/src/main/java/org/aohe/web/SocketServer.java @@ -60,7 +60,7 @@ public class SocketServer extends WebSocketServer { @Override public void onStart() { - log.info("Server started!"); + log.info("Default SocketServer started!"); setConnectionLostTimeout(0); setConnectionLostTimeout(100); diff --git a/src/main/java/org/aohe/webcam/WebCamUtils.java b/src/main/java/org/aohe/webcam/WebCamUtils.java index 3e2852a..245bf94 100644 --- a/src/main/java/org/aohe/webcam/WebCamUtils.java +++ b/src/main/java/org/aohe/webcam/WebCamUtils.java @@ -90,17 +90,19 @@ public class WebCamUtils { return webcam.getImage(); } - public static byte[] getImageByteBuffer(){ + /** + * 使用 Native Driver 时不生效 + * @return + */ + public static ByteBuffer getImageByteBuffer(){ if (!webcam.isOpen()){ webcam.open(); } ByteBuffer imageBytes = webcam.getImageBytes(); - imageBytes.flip(); - System.out.println("imageBytes.remaining():"+imageBytes.remaining()); byte[] byteArray = new byte[imageBytes.remaining()]; imageBytes.get(byteArray); - System.out.println("byteArray.length:"+byteArray.length); - return byteArray; + + return imageBytes; } public static InputStream getImageInputStream() { diff --git a/src/main/java/org/aohe/webcam/WebcamShowTask.java b/src/main/java/org/aohe/webcam/WebcamShowTask.java index 7ae378f..df80d6f 100644 --- a/src/main/java/org/aohe/webcam/WebcamShowTask.java +++ b/src/main/java/org/aohe/webcam/WebcamShowTask.java @@ -3,17 +3,12 @@ package org.aohe.webcam; import lombok.extern.slf4j.Slf4j; import org.aohe.constant.Control; import org.aohe.constant.SocketEnum; -import org.aohe.result.R; import org.aohe.web.SocketUtils; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; -import java.io.File; import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -41,15 +36,17 @@ public class WebcamShowTask extends Thread { bi = null; } } - String base64 = null; - try { - base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); - } catch (UnsupportedEncodingException e) { - log.error(e.getMessage(), e); - }finally { - baos.close(); - } - SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(R.ok(base64).toJsonStr()); +// String base64 = null; +// try { +// base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); +// } catch (UnsupportedEncodingException e) { +// log.error(e.getMessage(), e); +// }finally { +// baos.close(); +// } + + SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(baos.toByteArray()); + baos.close(); } } catch (Exception e) { log.error(e.getMessage(), e); @@ -64,23 +61,13 @@ public class WebcamShowTask extends Thread { } - public static void main(String[] args) { - SocketUtils.start(SocketEnum.CAM_SOCKET); - File file = new File("\"C:\\Users\\JianGuo\\Pictures\\Screenshots\\abc.png"); - while (true){ - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try { - BufferedImage image = ImageIO.read(file); - ImageIO.write(image, "PNG", baos); - } catch (IOException e) { - //log.error(e.getMessage(), e); - } - - String base64 = null; - base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), StandardCharsets.UTF_8); - - SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(base64); - } - } +// public static void main(String[] args) { +// SocketUtils.start(SocketEnum.CAM_SOCKET); +// WebCamUtils.setWebcam(0); +// WebCamUtils.open(); +// //File file = new File("\"C:\\Users\\JianGuo\\Pictures\\Screenshots\\abc.png"); +// while (true){ +// SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(WebCamUtils.getImageByteBuffer()); +// } +// } } diff --git a/src/main/java/org/aohe/webcam/WebcamShowTask2.java b/src/main/java/org/aohe/webcam/WebcamShowTask2.java index 06cd1ea..148ce1f 100644 --- a/src/main/java/org/aohe/webcam/WebcamShowTask2.java +++ b/src/main/java/org/aohe/webcam/WebcamShowTask2.java @@ -1,95 +1,95 @@ -package org.aohe.webcam; - -import lombok.extern.slf4j.Slf4j; -import org.aohe.constant.Control; -import org.aohe.constant.SocketEnum; -import org.aohe.web.SocketUtils; -import org.java_websocket.framing.BinaryFrame; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -@Slf4j -public class WebcamShowTask2 extends Thread { - - private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); - - @Override - public void run() { - scheduler.scheduleAtFixedRate(() -> { - try { - while (Control.SHOW_CAMERA) { - WebCamUtils.open(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - BufferedImage bi = WebCamUtils.getImage(); - try { - ImageIO.write(bi, "JPG", baos); - } catch (IOException e) { - //log.error(e.getMessage(), e); - }finally { - if (bi != null){ - bi.flush(); - bi = null; - } - } -// String base64 = null; +//package org.aohe.webcam; +// +//import lombok.extern.slf4j.Slf4j; +//import org.aohe.constant.Control; +//import org.aohe.constant.SocketEnum; +//import org.aohe.web.SocketUtils; +//import org.java_websocket.framing.BinaryFrame; +// +//import javax.imageio.ImageIO; +//import java.awt.image.BufferedImage; +//import java.io.ByteArrayOutputStream; +//import java.io.IOException; +//import java.nio.ByteBuffer; +//import java.util.concurrent.Executors; +//import java.util.concurrent.ScheduledExecutorService; +//import java.util.concurrent.TimeUnit; +// +//@Slf4j +//public class WebcamShowTask2 extends Thread { +// +// private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); +// +// @Override +// public void run() { +// scheduler.scheduleAtFixedRate(() -> { +// try { +// while (Control.SHOW_CAMERA) { +// WebCamUtils.open(); +// ByteArrayOutputStream baos = new ByteArrayOutputStream(); +// BufferedImage bi = WebCamUtils.getImage(); // try { -// base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); -// } catch (UnsupportedEncodingException e) { -// log.error(e.getMessage(), e); +// ImageIO.write(bi, "JPG", baos); +// } catch (IOException e) { +// //log.error(e.getMessage(), e); // }finally { -// baos.close(); +// if (bi != null){ +// bi.flush(); +// bi = null; +// } // } - - SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(WebCamUtils.getImageByteBuffer()); - } - } catch (Exception e) { - log.error(e.getMessage(), e); - } - }, 0, 100, TimeUnit.MILLISECONDS); - - try { - Thread.currentThread().join(); - } catch (InterruptedException e) { - log.error("Main thread interrupted", e); - } - - } - - public static void main(String[] args) { - SocketUtils.start(SocketEnum.CAM_SOCKET); - WebCamUtils.setWebcam(0); - WebCamUtils.open(); - //File file = new File("\"C:\\Users\\JianGuo\\Pictures\\Screenshots\\abc.png"); - while (true){ - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - BufferedImage bi = WebCamUtils.getImage(); - try { - ImageIO.write(bi, "JPG", baos); - } catch (IOException e) { - //log.error(e.getMessage(), e); - }finally { - if (bi != null){ - bi.flush(); - bi = null; - } - } -// try { -// base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); -// } catch (UnsupportedEncodingException e) { -// log.error(e.getMessage(), e); -// }finally { -// baos.close(); -// } - BinaryFrame frame = new BinaryFrame(); - frame.setPayload(ByteBuffer.wrap(baos.toByteArray())); - SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(frame); - } - } -} +//// String base64 = null; +//// try { +//// base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); +//// } catch (UnsupportedEncodingException e) { +//// log.error(e.getMessage(), e); +//// }finally { +//// baos.close(); +//// } +// +// SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(WebCamUtils.getImageByteBuffer()); +// } +// } catch (Exception e) { +// log.error(e.getMessage(), e); +// } +// }, 0, 100, TimeUnit.MILLISECONDS); +// +// try { +// Thread.currentThread().join(); +// } catch (InterruptedException e) { +// log.error("Main thread interrupted", e); +// } +// +// } +// +// public static void main(String[] args) { +// SocketUtils.start(SocketEnum.CAM_SOCKET); +// WebCamUtils.setWebcam(1); +// WebCamUtils.open(); +// //File file = new File("\"C:\\Users\\JianGuo\\Pictures\\Screenshots\\abc.png"); +// while (true){ +// ByteArrayOutputStream baos = new ByteArrayOutputStream(); +// BufferedImage bi = WebCamUtils.getImage(); +// try { +// ImageIO.write(bi, "JPG", baos); +// } catch (IOException e) { +// //log.error(e.getMessage(), e); +// }finally { +// if (bi != null){ +// bi.flush(); +// bi = null; +// } +// } +//// try { +//// base64 = new String(Base64.getEncoder().encode(baos.toByteArray()), "UTF8"); +//// } catch (UnsupportedEncodingException e) { +//// log.error(e.getMessage(), e); +//// }finally { +//// baos.close(); +//// } +// BinaryFrame frame = new BinaryFrame(); +// frame.setPayload(ByteBuffer.wrap(baos.toByteArray())); +// SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(frame); +// } +// } +//}