{"id":457,"date":"2026-05-26T10:08:50","date_gmt":"2026-05-26T10:08:50","guid":{"rendered":"https:\/\/b-common.de\/?page_id=457"},"modified":"2026-07-19T15:01:29","modified_gmt":"2026-07-19T15:01:29","slug":"qr-code-ii","status":"publish","type":"page","link":"https:\/\/b-common.de\/?page_id=457","title":{"rendered":"QR-CODE-MOTHER"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border is-style-default\" style=\"margin-top:0;margin-bottom:0\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1280\" src=\"https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-scaled.png\" alt=\"\" class=\"has-border-color has-base-border-color wp-image-811\" style=\"border-width:35px;border-top-left-radius:222px;border-top-right-radius:222px;border-bottom-left-radius:222px;border-bottom-right-radius:222px\" srcset=\"https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-scaled.png 2560w, https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-300x150.png 300w, https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-1024x512.png 1024w, https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-768x384.png 768w, https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-1536x768.png 1536w, https:\/\/b-common.de\/wp-content\/uploads\/2026\/07\/bernoulli_lemniskate_kurve-1-2048x1024.png 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/qrcode-generator@1.4.4\/qrcode.js\"><\/script>\n<div class=\"qrfc-wrap\" id=\"qrfc_6a5e04395c681\">\n  <div class=\"qrfc-form\">\n    <input\n      type=\"text\"\n      class=\"qrfc-input\"\n      placeholder=\"https:\/\/ihre-website.de\"\n      value=\"\"\n      aria-label=\"URL eingeben\"\n    \/>\n    <button type=\"button\" class=\"qrfc-btn\">QR Code erstellen<\/button>\n  <\/div>\n  <div class=\"qrfc-error\" style=\"display:none;color:#dc2626;font-size:.85rem;margin-top:.4rem;\"><\/div>\n  <div class=\"qrfc-preview\" style=\"display:none;\">\n    <canvas class=\"qrfc-canvas\"><\/canvas>\n    <a class=\"qrfc-download\" download=\"qrcode.png\">PNG herunterladen<\/a>\n  <\/div>\n  <p class=\"qrfc-hint\">4 gleiche Ecken &middot; Mit jedem QR-Scanner lesbar<\/p>\n<\/div>\n\n<style>\n#qrfc_6a5e04395c681{font-family:inherit;max-width:420px;margin:1.5rem auto;}\n#qrfc_6a5e04395c681 .qrfc-form{display:flex;gap:.6rem;flex-wrap:wrap;}\n#qrfc_6a5e04395c681 .qrfc-input{flex:1;min-width:0;padding:.6rem .9rem;border:1.5px solid #d1d5db;border-radius:8px;font-size:.95rem;outline:none;box-sizing:border-box;transition:border-color .2s;}\n#qrfc_6a5e04395c681 .qrfc-input:focus{border-color:#000000;}\n#qrfc_6a5e04395c681 .qrfc-btn{padding:.6rem 1.2rem;background:#000000;color:#ffffff;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:opacity .2s;}\n#qrfc_6a5e04395c681 .qrfc-btn:hover{opacity:.82;}\n#qrfc_6a5e04395c681 .qrfc-preview{margin-top:1.2rem;display:flex;flex-direction:column;align-items:center;gap:.9rem;}\n#qrfc_6a5e04395c681 .qrfc-canvas{border-radius:8px;display:block;max-width:100%;height:auto;image-rendering:pixelated;}\n#qrfc_6a5e04395c681 .qrfc-download{display:inline-block;padding:.55rem 1.6rem;background:#000000;color:#ffffff;border-radius:8px;text-decoration:none;font-size:.9rem;font-weight:600;transition:opacity .2s;}\n#qrfc_6a5e04395c681 .qrfc-download:hover{opacity:.82;}\n#qrfc_6a5e04395c681 .qrfc-hint{text-align:center;font-size:.78rem;color:#9ca3af;margin-top:.6rem;}\n<\/style>\n\n<script>\n(function () {\n  var WIDGET_ID  = \"qrfc_6a5e04395c681\";\n  var TARGET_PX  = 280;\n  var MARGIN     = 20;\n  var FG         = \"#000000\";\n  var BG         = \"#ffffff\";\n  var DEFAULT    = \"\";\n\n  \/* Draw one 7\u00d77 finder square at canvas pixel position (px, py).\n     All 4 corners call this same function \u2192 pixel-perfect identical. *\/\n  function drawFinder(ctx, px, py, mod, fg, bg) {\n    var s = mod * 7;\n    ctx.fillStyle = fg; ctx.fillRect(px, py, s, s);\n    ctx.fillStyle = bg; ctx.fillRect(px + mod, py + mod, mod * 5, mod * 5);\n    ctx.fillStyle = fg; ctx.fillRect(px + mod*2, py + mod*2, mod * 3, mod * 3);\n  }\n\n  function renderQR(canvas, text, fg, bg) {\n    \/* qrcode-generator: type=0 (auto version), error correction M *\/\n    var qr = qrcode(0, 'M');\n    qr.addData(text);\n    qr.make();\n\n    var n   = qr.getModuleCount();\n    var mod = Math.floor((TARGET_PX - MARGIN * 2) \/ n);\n    var sz  = mod * n + MARGIN * 2;\n\n    canvas.width  = sz;\n    canvas.height = sz;\n\n    var ctx = canvas.getContext('2d');\n\n    \/* Background *\/\n    ctx.fillStyle = bg;\n    ctx.fillRect(0, 0, sz, sz);\n\n    \/* All data modules *\/\n    ctx.fillStyle = fg;\n    for (var r = 0; r < n; r++) {\n      for (var c = 0; c < n; c++) {\n        if (qr.isDark(r, c)) {\n          ctx.fillRect(MARGIN + c * mod, MARGIN + r * mod, mod, mod);\n        }\n      }\n    }\n\n    \/* Overwrite all 4 corners with identical finder squares *\/\n    var tl = MARGIN;\n    var br = MARGIN + (n - 7) * mod;\n    drawFinder(ctx, tl, tl, mod, fg, bg);   \/* top-left     *\/\n    drawFinder(ctx, br, tl, mod, fg, bg);   \/* top-right    *\/\n    drawFinder(ctx, tl, br, mod, fg, bg);   \/* bottom-left  *\/\n    drawFinder(ctx, br, br, mod, fg, bg);   \/* bottom-right *\/\n  }\n\n  function boot() {\n    var wrap      = document.getElementById(WIDGET_ID);\n    if (!wrap) return;\n    var input     = wrap.querySelector('.qrfc-input');\n    var btn       = wrap.querySelector('.qrfc-btn');\n    var preview   = wrap.querySelector('.qrfc-preview');\n    var canvas    = wrap.querySelector('.qrfc-canvas');\n    var dlLink    = wrap.querySelector('.qrfc-download');\n    var errBox    = wrap.querySelector('.qrfc-error');\n\n    function go() {\n      errBox.style.display = 'none';\n      var raw = input.value.trim();\n      if (!raw) {\n        errBox.textContent = 'Bitte eine URL oder einen Text eingeben.';\n        errBox.style.display = 'block';\n        return;\n      }\n      \/* Auto-prepend https:\/\/ for bare domains *\/\n      if (!\/^[a-z][a-z0-9+\\-.]*:\\\/\\\/\/i.test(raw)) raw = 'https:\/\/' + raw;\n      try {\n        renderQR(canvas, raw, FG, BG);\n        canvas.style.width  = Math.min(TARGET_PX, 320) + 'px';\n        canvas.style.height = Math.min(TARGET_PX, 320) + 'px';\n        dlLink.href = canvas.toDataURL('image\/png');\n        preview.style.display = 'flex';\n      } catch (e) {\n        errBox.textContent = 'Fehler: ' + (e.message || 'QR Code konnte nicht erstellt werden.');\n        errBox.style.display = 'block';\n      }\n    }\n\n    btn.addEventListener('click', go);\n    input.addEventListener('keydown', function (e) { if (e.key === 'Enter') go(); });\n\n    \/* Render default URL if provided *\/\n    if (DEFAULT) { input.value = DEFAULT; go(); }\n  }\n\n  function waitAndBoot() {\n    if (typeof qrcode !== 'undefined') boot();\n    else setTimeout(waitAndBoot, 40);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', waitAndBoot);\n  } else {\n    waitAndBoot();\n  }\n})();\n<\/script>\n\n\n\n\n<p class=\"has-text-align-center has-base-2-background-color has-background wp-block-paragraph\">Was sich \u00f6ffnet, ist kein Ort.<br>Nur eine Maschine, die weitertr\u00e4umt:<br>sie spuckt neue Codes, unaufh\u00f6rlich,<br>Zeichen, die nichts mehr zeigen als sich selbst.<\/p>\n\n\n\n<p class=\"has-text-align-center has-base-2-background-color has-background wp-block-paragraph\">Das Alte tr\u00e4gt das Neue.<br>Das Neue verweist ins Leere.<\/p>\n\n\n\n<p class=\"has-text-align-center has-base-2-background-color has-background wp-block-paragraph\">Wer hier scannt, verl\u00e4sst das Papier<br>und betritt eine Schleife ohne Ufer \u2013<br>ein Bild, das ein Bild sucht,<br>das ein Bild sucht,<br>das ein Bild sucht.<\/p>\n\n\n\n<p class=\"has-text-align-center has-base-2-background-color has-background wp-block-paragraph\">Am Ende bleibt nur die Geste des Zeigens.<br>Nie das Gezeigte selbst.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was sich \u00f6ffnet, ist kein Ort.Nur eine Maschine, die weitertr\u00e4umt:sie spuckt neue Codes, unaufh\u00f6rlich,Zeichen, die nichts mehr zeigen als sich selbst. Das Alte tr\u00e4gt das Neue.Das Neue verweist ins Leere. Wer hier scannt, verl\u00e4sst das Papierund betritt eine Schleife ohne Ufer \u2013ein Bild, das ein Bild sucht,das ein Bild sucht,das ein Bild sucht. Am Ende [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-457","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/pages\/457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/b-common.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=457"}],"version-history":[{"count":12,"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/pages\/457\/revisions"}],"predecessor-version":[{"id":818,"href":"https:\/\/b-common.de\/index.php?rest_route=\/wp\/v2\/pages\/457\/revisions\/818"}],"wp:attachment":[{"href":"https:\/\/b-common.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}