|
|
@@ -227,10 +227,27 @@ async function cameraTakePhoto(filename) {
|
|
|
return await r.json();
|
|
|
}
|
|
|
|
|
|
-function setImageSrc(id, url)
|
|
|
+let imageLoadSeq = 0;
|
|
|
+function setImageSrc(id, url, showLoadStatus = true)
|
|
|
{
|
|
|
const img = document.getElementById(id);
|
|
|
- if (img) img.src = url;
|
|
|
+ if (!img) return;
|
|
|
+
|
|
|
+ const seq = ++imageLoadSeq;
|
|
|
+ const start = Date.now();
|
|
|
+
|
|
|
+ img.onload = function() {
|
|
|
+ if (seq !== imageLoadSeq || !showLoadStatus) return;
|
|
|
+ setText("cvar1", "图片加载完成, 耗时:" + (Date.now() - start) + "ms", "page5");
|
|
|
+ };
|
|
|
+
|
|
|
+ img.onerror = function() {
|
|
|
+ if (seq !== imageLoadSeq || !showLoadStatus) return;
|
|
|
+ setText("cvar1", "图片加载失败, 耗时:" + (Date.now() - start) + "ms", "page5");
|
|
|
+ }
|
|
|
+
|
|
|
+ const separator = url.includes("?") ? "&" : "?";
|
|
|
+ img.src = url + separator + "t=" + Date.now();
|
|
|
}
|
|
|
|
|
|
async function takeOnePhoto() {
|
|
|
@@ -258,15 +275,15 @@ async function takeOnePhoto() {
|
|
|
const data = await cameraTakePhoto(filename);
|
|
|
if (!data.ok) throw new Error("take photo failed");
|
|
|
|
|
|
- cameraCurrentFile = filename;
|
|
|
- setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(filename) + "&t=" + Date.now());
|
|
|
-
|
|
|
- setText("cvar1", "拍照完成", "page5");
|
|
|
+ setText("cvar1", "预览中, 请稍后...", "page5");
|
|
|
setText("cvar2", "1", "page5");
|
|
|
setText("cvar3", data.var1, "page5");
|
|
|
setText("cvar4", data.var2, "page5");
|
|
|
setText("cvar5", data.var3, "page5");
|
|
|
setText("cvar6", data.var4 + "x" + data.var5, "page5");
|
|
|
+
|
|
|
+ cameraCurrentFile = filename;
|
|
|
+ setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(cameraCurrentFile), true);
|
|
|
} catch(e) {
|
|
|
console.error("takeOnePhoto failed:", e);
|
|
|
setText("cvar1", "拍照失败", "page5");
|
|
|
@@ -327,15 +344,16 @@ async function cameraPreviewLoop() {
|
|
|
const data = await cameraTakePhoto(filename);
|
|
|
if (!data.ok) throw new Error("take photo failed");
|
|
|
|
|
|
- cameraCurrentFile = filename;
|
|
|
+ setText("cvar1", "预览中, 请稍后...", "page5");
|
|
|
cameraPreviewFrames++;
|
|
|
- setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(filename) + "&t=" + Date.now());
|
|
|
- setText("cvar1", "拍照完成", "page5");
|
|
|
setText("cvar2", String(cameraPreviewFrames), "page5");
|
|
|
setText("cvar3", data.var1, "page5");
|
|
|
setText("cvar4", data.var2, "page5");
|
|
|
setText("cvar5", data.var3, "page5");
|
|
|
setText("cvar6", data.var4 + "x" + data.var5, "page5");
|
|
|
+
|
|
|
+ cameraCurrentFile = filename;
|
|
|
+ setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(cameraCurrentFile), false);
|
|
|
} catch(e) {
|
|
|
console.error("cameraPreviewLoop failed:", e);
|
|
|
stopCameraPreview();
|
|
|
@@ -346,6 +364,7 @@ async function cameraPreviewLoop() {
|
|
|
if (cameraPreviewRunning) {
|
|
|
cameraPreviewTimer = setTimeout(cameraPreviewLoop, 20);
|
|
|
} else {
|
|
|
+ setText("cvar1", "连拍已停止", "page5");
|
|
|
setCameraWaitAEDone(true)
|
|
|
.catch(e => {
|
|
|
console.error("restore wait AE failed:", e);
|
|
|
@@ -364,7 +383,7 @@ function stopCameraPreview() {
|
|
|
clearTimeout(cameraPreviewTimer);
|
|
|
cameraPreviewTimer = null;
|
|
|
}
|
|
|
- setText("cvar1", "停止中, 请稍后...", "page5");
|
|
|
+ setText("cvar1", "停止连怕中, 请稍后...", "page5");
|
|
|
}
|
|
|
|
|
|
function downloadCameraImage() {
|
|
|
@@ -384,11 +403,10 @@ function downloadCameraImage() {
|
|
|
|
|
|
function initPage5() {
|
|
|
getCameraStatus();
|
|
|
- if (cameraCurrentFile) {
|
|
|
- setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(cameraCurrentFile) + "&t=" + Date.now());
|
|
|
- }
|
|
|
if (cameraTakingPhoto || cameraPreviewRunning) {
|
|
|
setText("cvar1", "拍照中, 请稍后...", "page5");
|
|
|
+ } else if (cameraCurrentFile) {
|
|
|
+ setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(cameraCurrentFile), true);
|
|
|
}
|
|
|
connectLog("yfkj-camera-capture.service", "text1");
|
|
|
}
|