diff --git a/alg/libqr.cpp b/alg/libqr.cpp
index e5da78b..585044c 100644
--- a/alg/libqr.cpp
+++ b/alg/libqr.cpp
@@ -95,9 +95,12 @@ bool detect_qr(ProcessState &ps, float margin_ratio, bool warp, string &err)
}
int qr_width = max_x - min_x;
int qr_height = max_y - min_y;
- if (qr_width < 200 && qr_height < 200 && qr_width < ps.orig->cols * 0.5 && qr_height < ps.orig->rows * 0.5) {
- printf("(%d, %d) in (%d, %d)\n", qr_width, qr_height, ps.orig->cols, ps.orig->rows);
- err = "qr too small";
+ float min_ratio = 0.3;
+ int min_width = std::max(180, (int)(ps.orig->cols * min_ratio));
+ int min_height = std::max(180, (int)(ps.orig->rows * min_ratio));
+ if (qr_width < min_width && qr_height < min_height) {
+ err = string_format("qr too small: %d x %d, thres: %d x %d",
+ qr_width, qr_height, min_width, min_height);
return false;
}
diff --git a/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br b/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br
index e21b689..12c8e6a 100755
Binary files a/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br and b/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br differ
diff --git a/scanner/pages/emblemscanner/emblemscanner.js b/scanner/pages/emblemscanner/emblemscanner.js
index b736e23..45d8b81 100644
--- a/scanner/pages/emblemscanner/emblemscanner.js
+++ b/scanner/pages/emblemscanner/emblemscanner.js
@@ -562,11 +562,20 @@ Page({
* Handle QR processing result
*/
handleQRResult(result, frame, copiedFrameData = null) {
- // Update debug info if available
- if (result.debug_data_url) {
- this.setData({
- debug_image_data_url: result.debug_data_url
- });
+ // Update debug info - prioritize WASM debug image, fallback to original frame
+ if (this.data.enable_debug) {
+ if (result.debug_data_url) {
+ // Priority 1: WASM returned a processed debug image (with QR detection overlay, etc.)
+ this.setData({
+ debug_image_data_url: result.debug_data_url
+ });
+ } else if (this.data.debug_current_frame_url) {
+ // Priority 2: No WASM debug image available, show the raw camera frame
+ this.setData({
+ debug_image_data_url: this.data.debug_current_frame_url
+ });
+ }
+ // If neither exists, the debug image box will remain empty/previous image
}
// Generate hint text
@@ -576,7 +585,7 @@ Page({
// don't require ok as we only care about the view has a valid qrcode in it
// zooming in so that it's more likely to be clear enough for upload
if (result.qrcode && result.valid_pattern && is_emblem_qr_pattern(result.qrcode)) {
- this.addDebugMessage(`QR detected and ready: ${result.qrcode}`);
+ this.addDebugMessage(`QR detected: ${result.qrcode} ok: ${result.ok}: err ${result.err}`);
// Trigger zoom-in if function is set up
if (!this.data.first_qr_found && this.on_first_qr_found) {
@@ -785,7 +794,7 @@ Page({
updateDebugFrameUrls(frameDataUrl) {
if (!this.data.enable_debug) return;
- // Just show the current frame
+ // Store current frame URL for potential use as fallback
this.setData({
debug_current_frame_url: frameDataUrl
});
diff --git a/scanner/pages/emblemscanner/emblemscanner.wxml b/scanner/pages/emblemscanner/emblemscanner.wxml
index 4feefec..6a4585b 100644
--- a/scanner/pages/emblemscanner/emblemscanner.wxml
+++ b/scanner/pages/emblemscanner/emblemscanner.wxml
@@ -23,7 +23,8 @@
@@ -73,9 +74,7 @@
-
-
-
+ Debug Frame
diff --git a/scanner/pages/emblemscanner/emblemscanner.wxss b/scanner/pages/emblemscanner/emblemscanner.wxss
index 0109170..1380bff 100644
--- a/scanner/pages/emblemscanner/emblemscanner.wxss
+++ b/scanner/pages/emblemscanner/emblemscanner.wxss
@@ -219,17 +219,6 @@ view.debug {
border: 1px solid rgba(239, 72, 35, 0.8);
}
-.debug-frame-box {
- flex-shrink: 0;
-}
-
-.debug-frame-box image {
- width: 64px;
- height: 64px;
- border: 1px solid rgba(35, 150, 239, 0.8);
-}
-
-.debug-frame-box .debug-label,
.debug-image-box .debug-label {
font-size: 8px;
color: #ffffff;