The pure-JS @zxing/library locator is weak on real ЧЗ codes (decoded 1/4 of the test photos with correct grayscale input; libdmtx and zxing-wasm read 3/4 — the 4th is physically undecodable). Symptom: scanner takes very long to even find a code, 2 of 4 never read. - Bundle zxing-wasm reader as an IIFE (frontend/lib/zxing-wasm.js, global ZXingWASM) + zxing_reader.wasm; drop frontend/lib/zxing.js. Init fetches the .wasm as an arrayBuffer and hands it over as wasmBinary (no streaming/MIME/CDN). - ChZ.zxReady()/ChZ.decodeImageData() (chzn.js): decode an ImageData -> raw GS1 bytes (result.bytes keeps the GS separators) with tryHarder/tryRotate/tryInvert. - Scanner (main.js) rewritten to a canvas loop: crop the central ROI, upscale to 540px, decode each frame — full-frame search was the slow/unreliable part. Photo path decodes the picked image the same way. Not yet verified on-device (WebView WASM instantiation); decoder logic validated in a Node harness against the 4 sample photos.
30 lines
1.1 KiB
HTML
30 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
|
<title>BalDav</title>
|
|
<link rel="stylesheet" href="lib/leaflet.css" />
|
|
<link rel="stylesheet" href="css/styles.css" />
|
|
</head>
|
|
<body>
|
|
<div id="app"></div>
|
|
|
|
<!-- Load order matters: db.js and bmr.js expose window.DB / window.BMR,
|
|
then main.js uses them. Tauri injects window.__TAURI__ before page scripts. -->
|
|
<script src="lib/leaflet.js"></script>
|
|
<script src="lib/leaflet-rotate.js"></script>
|
|
<script src="lib/hammer.min.js"></script>
|
|
<script src="lib/chart.min.js"></script>
|
|
<script src="lib/chartjs-plugin-zoom.min.js"></script>
|
|
<script src="lib/jszip.min.js"></script>
|
|
<script src="lib/zxing-wasm.js"></script>
|
|
<script src="js/db.js"></script>
|
|
<script src="js/bmr.js"></script>
|
|
<script src="js/tilecache.js"></script>
|
|
<script src="js/gps.js"></script>
|
|
<script src="js/sync.js"></script>
|
|
<script src="js/chzn.js"></script>
|
|
<script src="js/main.js"></script>
|
|
</body>
|
|
</html>
|