2 次代碼提交 ec4b5f74cc ... 45dc0e053f

作者 SHA1 備註 提交日期
  codemasher 45dc0e053f Deploying to readthedocs from @ chillerlan/php-qrcode@c55c64dfa035a3c3ad91a4e13ed10bcd5a3c6807 🚀 1 月之前
  codemasher 8afe707d78 Deploying to readthedocs from @ chillerlan/php-qrcode@5536c2615590184d9e086b751bd13672db9d8d4e 🚀 1 月之前

+ 1 - 1
.buildinfo

@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 63273aca51fbfaa3fb0a7f6947383520
+config: 7101700c690aacfd458b1e800326de79
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 13 - 4
Appendix/Contribute.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -429,7 +438,7 @@ The markdown sources for the <a class="reference external" href="https://php-qrc
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Appendix/License.html

@@ -74,7 +74,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -88,14 +87,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -148,6 +145,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -811,7 +820,7 @@ Creative Commons may be contacted at creativecommons.org.
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 30 - 99
Appendix/Performance-considerations.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -396,70 +405,31 @@ encoding those characters as 3 or 4 byte UTF-8 may still be faster in 8-bit byte
 is a complex and costly operation that is necessary to ensure the symbol is readable. Although <a class="reference internal" href="../Usage/Configuration-settings.html#maskpattern"><span class="std std-ref">there is an option</span></a>
 to override the evaluation and manually set a mask pattern, this is not recommended unless you know exactly what you’re doing
 as it can render a QR symbol unreadable.</p>
-<p>The table below shows the performance impact (in miliseconds) of the mask pattern evaluation for each version, the times may vary between systems.</p>
+<p>The table below shows the performance impact (in miliseconds) of the mask pattern evaluation for select versions, the times may vary between systems.</p>
 <table class="docutils align-default">
 <thead>
 <tr class="row-odd"><th class="head"><p>version</p></th>
-<th class="head text-right"><p>1</p></th>
-<th class="head text-right"><p>2</p></th>
-<th class="head text-right"><p>3</p></th>
-<th class="head text-right"><p>4</p></th>
-<th class="head text-right"><p>5</p></th>
-<th class="head text-right"><p>6</p></th>
-<th class="head text-right"><p>7</p></th>
-<th class="head text-right"><p>8</p></th>
-<th class="head text-right"><p>9</p></th>
-<th class="head text-right"><p>10</p></th>
+<th class="head text-right"><p>time (ms)</p></th>
 </tr>
 </thead>
 <tbody>
-<tr class="row-even"><td><p><strong>1-10</strong></p></td>
-<td class="text-right"><p>4.414</p></td>
-<td class="text-right"><p>5.697</p></td>
-<td class="text-right"><p>7.986</p></td>
-<td class="text-right"><p>9.221</p></td>
-<td class="text-right"><p>10.877</p></td>
-<td class="text-right"><p>11.293</p></td>
-<td class="text-right"><p>13.901</p></td>
-<td class="text-right"><p>15.563</p></td>
-<td class="text-right"><p>18.142</p></td>
-<td class="text-right"><p>20.501</p></td>
+<tr class="row-even"><td><p><strong>1</strong></p></td>
+<td class="text-right"><p>2.285</p></td>
+</tr>
+<tr class="row-odd"><td><p><strong>5</strong></p></td>
+<td class="text-right"><p>5.867</p></td>
+</tr>
+<tr class="row-even"><td><p><strong>10</strong></p></td>
+<td class="text-right"><p>12.737</p></td>
 </tr>
-<tr class="row-odd"><td><p><strong>11-20</strong></p></td>
-<td class="text-right"><p>22.662</p></td>
-<td class="text-right"><p>27.779</p></td>
-<td class="text-right"><p>29.622</p></td>
-<td class="text-right"><p>33.017</p></td>
-<td class="text-right"><p>36.358</p></td>
-<td class="text-right"><p>39.712</p></td>
-<td class="text-right"><p>43.685</p></td>
-<td class="text-right"><p>47.121</p></td>
-<td class="text-right"><p>51.389</p></td>
-<td class="text-right"><p>57.865</p></td>
+<tr class="row-odd"><td><p><strong>20</strong></p></td>
+<td class="text-right"><p>34.045</p></td>
 </tr>
-<tr class="row-even"><td><p><strong>21-30</strong></p></td>
-<td class="text-right"><p>59.753</p></td>
-<td class="text-right"><p>68.502</p></td>
-<td class="text-right"><p>68.523</p></td>
-<td class="text-right"><p>72.866</p></td>
-<td class="text-right"><p>78.245</p></td>
-<td class="text-right"><p>83.593</p></td>
-<td class="text-right"><p>88.327</p></td>
-<td class="text-right"><p>94.921</p></td>
-<td class="text-right"><p>103.394</p></td>
-<td class="text-right"><p>106.358</p></td>
+<tr class="row-even"><td><p><strong>30</strong></p></td>
+<td class="text-right"><p>64.914</p></td>
 </tr>
-<tr class="row-odd"><td><p><strong>31-40</strong></p></td>
-<td class="text-right"><p>113.311</p></td>
-<td class="text-right"><p>120.484</p></td>
-<td class="text-right"><p>126.215</p></td>
-<td class="text-right"><p>132.931</p></td>
-<td class="text-right"><p>139.783</p></td>
-<td class="text-right"><p>145.617</p></td>
-<td class="text-right"><p>170.576</p></td>
-<td class="text-right"><p>165.996</p></td>
-<td class="text-right"><p>167.365</p></td>
-<td class="text-right"><p>175.821</p></td>
+<tr class="row-odd"><td><p><strong>40</strong></p></td>
+<td class="text-right"><p>107.027</p></td>
 </tr>
 </tbody>
 </table>
@@ -467,7 +437,7 @@ as it can render a QR symbol unreadable.</p>
 <section id="output">
 <h2>Output<a class="headerlink" href="#output" title="Link to this heading"></a></h2>
 <p>Output rendering depends heavily on the size of the QR matrix, the desired type and the underlying libraries and/or PHP extensions.
-Especially the rendering of raster images through GD or ImagMagick can be very slow, depending on <a class="reference internal" href="../Usage/Configuration-settings.html#scale"><span class="std std-ref">the scale setting</span></a>,
+Especially the rendering of raster images through GD or ImageMagick can be very slow, depending on <a class="reference internal" href="../Usage/Configuration-settings.html#scale"><span class="std std-ref">the scale setting</span></a>,
 filters and image type.</p>
 <p>Below a comparison of the performance for the several built-in output classes (times in miliseconds, scale = 5):</p>
 <table class="docutils align-default">
@@ -475,11 +445,8 @@ filters and image type.</p>
 <tr class="row-odd"><th class="head"><p></p></th>
 <th class="head text-right"><p>v5</p></th>
 <th class="head text-right"><p>v10</p></th>
-<th class="head text-right"><p>v15</p></th>
 <th class="head text-right"><p>v20</p></th>
-<th class="head text-right"><p>v25</p></th>
 <th class="head text-right"><p>v30</p></th>
-<th class="head text-right"><p>v35</p></th>
 <th class="head text-right"><p>v40</p></th>
 </tr>
 </thead>
@@ -487,121 +454,85 @@ filters and image type.</p>
 <tr class="row-even"><td><p><strong>QRMarkupSVG</strong></p></td>
 <td class="text-right"><p>3.732</p></td>
 <td class="text-right"><p>8.645</p></td>
-<td class="text-right"><p>13.846</p></td>
 <td class="text-right"><p>21.127</p></td>
-<td class="text-right"><p>32.842</p></td>
 <td class="text-right"><p>43.753</p></td>
-<td class="text-right"><p>56.584</p></td>
 <td class="text-right"><p>73.885</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QRMarkupHTML</strong></p></td>
 <td class="text-right"><p>0.522</p></td>
 <td class="text-right"><p>1.308</p></td>
-<td class="text-right"><p>2.062</p></td>
 <td class="text-right"><p>2.761</p></td>
-<td class="text-right"><p>3.907</p></td>
 <td class="text-right"><p>5.201</p></td>
-<td class="text-right"><p>7.931</p></td>
 <td class="text-right"><p>9.572</p></td>
 </tr>
 <tr class="row-even"><td><p><strong>QRGdImageBMP</strong></p></td>
 <td class="text-right"><p>5.998</p></td>
 <td class="text-right"><p>12.541</p></td>
-<td class="text-right"><p>20.728</p></td>
 <td class="text-right"><p>32.336</p></td>
-<td class="text-right"><p>46.345</p></td>
 <td class="text-right"><p>62.842</p></td>
-<td class="text-right"><p>81.555</p></td>
 <td class="text-right"><p>106.482</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QRGdImageGIF</strong></p></td>
 <td class="text-right"><p>3.427</p></td>
 <td class="text-right"><p>6.817</p></td>
-<td class="text-right"><p>12.226</p></td>
 <td class="text-right"><p>17.925</p></td>
-<td class="text-right"><p>25.453</p></td>
 <td class="text-right"><p>35.136</p></td>
-<td class="text-right"><p>44.706</p></td>
 <td class="text-right"><p>57.477</p></td>
 </tr>
 <tr class="row-even"><td><p><strong>QRGdImageJPEG</strong></p></td>
 <td class="text-right"><p>2.284</p></td>
 <td class="text-right"><p>4.882</p></td>
-<td class="text-right"><p>8.161</p></td>
 <td class="text-right"><p>12.097</p></td>
-<td class="text-right"><p>17.333</p></td>
 <td class="text-right"><p>23.862</p></td>
-<td class="text-right"><p>30.327</p></td>
 <td class="text-right"><p>40.226</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QRGdImagePNG</strong></p></td>
 <td class="text-right"><p>4.523</p></td>
 <td class="text-right"><p>9.377</p></td>
-<td class="text-right"><p>16.581</p></td>
 <td class="text-right"><p>26.207</p></td>
-<td class="text-right"><p>36.516</p></td>
 <td class="text-right"><p>49.066</p></td>
-<td class="text-right"><p>63.765</p></td>
 <td class="text-right"><p>82.074</p></td>
 </tr>
 <tr class="row-even"><td><p><strong>QRGdImageWEBP</strong></p></td>
 <td class="text-right"><p>8.211</p></td>
 <td class="text-right"><p>17.367</p></td>
-<td class="text-right"><p>30.079</p></td>
 <td class="text-right"><p>47.095</p></td>
-<td class="text-right"><p>69.668</p></td>
 <td class="text-right"><p>91.378</p></td>
-<td class="text-right"><p>119.869</p></td>
 <td class="text-right"><p>150.288</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QRStringJSON</strong></p></td>
 <td class="text-right"><p>0.043</p></td>
 <td class="text-right"><p>0.066</p></td>
-<td class="text-right"><p>0.107</p></td>
 <td class="text-right"><p>0.158</p></td>
-<td class="text-right"><p>0.215</p></td>
 <td class="text-right"><p>0.301</p></td>
-<td class="text-right"><p>0.369</p></td>
 <td class="text-right"><p>0.492</p></td>
 </tr>
 <tr class="row-even"><td><p><strong>QRStringText</strong></p></td>
 <td class="text-right"><p>0.229</p></td>
 <td class="text-right"><p>0.387</p></td>
-<td class="text-right"><p>0.628</p></td>
 <td class="text-right"><p>0.952</p></td>
-<td class="text-right"><p>1.312</p></td>
 <td class="text-right"><p>1.759</p></td>
-<td class="text-right"><p>2.329</p></td>
 <td class="text-right"><p>3.045</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QRImagick</strong></p></td>
 <td class="text-right"><p>37.694</p></td>
 <td class="text-right"><p>68.808</p></td>
-<td class="text-right"><p>114.415</p></td>
 <td class="text-right"><p>172.962</p></td>
-<td class="text-right"><p>242.338</p></td>
 <td class="text-right"><p>325.085</p></td>
-<td class="text-right"><p>419.999</p></td>
 <td class="text-right"><p>529.897</p></td>
 </tr>
 <tr class="row-even"><td><p><strong>QRFpdf</strong></p></td>
 <td class="text-right"><p>6.578</p></td>
 <td class="text-right"><p>12.466</p></td>
-<td class="text-right"><p>21.169</p></td>
 <td class="text-right"><p>33.021</p></td>
-<td class="text-right"><p>45.469</p></td>
 <td class="text-right"><p>61.198</p></td>
-<td class="text-right"><p>80.092</p></td>
 <td class="text-right"><p>100.059</p></td>
 </tr>
 <tr class="row-odd"><td><p><strong>QREps</strong></p></td>
 <td class="text-right"><p>1.269</p></td>
 <td class="text-right"><p>2.694</p></td>
-<td class="text-right"><p>4.515</p></td>
 <td class="text-right"><p>6.933</p></td>
-<td class="text-right"><p>11.049</p></td>
 <td class="text-right"><p>14.181</p></td>
-<td class="text-right"><p>20.799</p></td>
 <td class="text-right"><p>25.886</p></td>
 </tr>
 </tbody>
@@ -620,7 +551,7 @@ filters and image type.</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 14 - 5
Appendix/Terminology.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -363,7 +372,7 @@
 <h1>Terminology<a class="headerlink" href="#terminology" title="Link to this heading"></a></h1>
 <section id="qr-code">
 <h2>QR Code<a class="headerlink" href="#qr-code" title="Link to this heading"></a></h2>
-<p>A <a class="reference external" href="https://en.wikipedia.org/wiki/QR_code"><em>QR code</em></a> (quick-response code) is a type of two-dimensional matrix barcode, invented
+<p>A <a class="reference external" href="https://en.wikipedia.org/wiki/QR_code"><em>QR code</em></a> (quick-response code), sometimes referred to as  <em>QR symbol</em> or simply just <em>symbol</em>, is a type of two-dimensional matrix barcode, invented
 in 1994 by Japanese company <a class="reference external" href="https://www.qrcode.com/en/faq.html#patentH2Title">Denso Wave</a> for labelling automobile parts.
 The QR labelling system was applied beyond the automobile industry due to its fast readability and greater storage capacity
 compared to standard UPC barcodes.
@@ -824,7 +833,7 @@ reflectance reversal therefore means a light image on dark background (example o
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Appendix/URI-Content.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -699,7 +708,7 @@ END:VCALENDAR
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QREps.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -463,7 +472,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRFpdf.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -471,7 +480,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRGdImage.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -518,7 +527,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRImagick.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -516,7 +525,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRInterventionImage.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -501,7 +510,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRMarkupHTML.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -476,7 +485,7 @@ As a general rule: if you plan to display the QR Code in a web browser, you shou
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRMarkupSVG.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -519,7 +528,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRMarkupXML.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -496,7 +505,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRStringJSON.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -439,7 +448,7 @@ which is equivalent to the following:</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Built-In-Output/QRStringText.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -448,7 +457,7 @@ render in a CLI console, using <a class="reference external" href="https://en.wi
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Customizing/Custom-output-interface.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul class="current">
@@ -585,7 +594,7 @@ x: 6, y: 4
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 15 - 6
Customizing/Module-Values.html

@@ -21,7 +21,7 @@
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="next" title="QROutputAbstract" href="QROutputAbstract.html" />
-    <link rel="prev" title="Configuration settings" href="../Usage/Configuration-settings.html" /> 
+    <link rel="prev" title="Logos and logo space" href="../Usage/Logos.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul class="current">
@@ -564,14 +573,14 @@ for RGB color (or 4 in case of RGBA), we’ll supply these as a array where each
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="../Usage/Configuration-settings.html" class="btn btn-neutral float-left" title="Configuration settings" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="../Usage/Logos.html" class="btn btn-neutral float-left" title="Logos and logo space" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
         <a href="QROutputAbstract.html" class="btn btn-neutral float-right" title="QROutputAbstract" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Customizing/QROutputAbstract.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="../Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="../Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul class="current">
@@ -606,7 +615,7 @@ The final output can be transformed to a <a class="reference external" href="htt
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 14 - 39
Usage/Advanced-usage.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -513,7 +522,7 @@ After invocation of the <code class="docutils literal notranslate"><span class="
 <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="k">null</span><span class="p">,</span> <span class="s1">&#39;/path/to/qrcode.svg&#39;</span><span class="p">);</span>
 </pre></div>
 </div>
-<p>The <a class="reference external" href="https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRDataModeInterface.php"><code class="docutils literal notranslate"><span class="pre">QRDataModeInterface</span></code></a> offers the <code class="docutils literal notranslate"><span class="pre">validateString()</span></code> method (implemended for <code class="docutils literal notranslate"><span class="pre">AlphaNum</span></code>, <code class="docutils literal notranslate"><span class="pre">Byte</span></code>, <code class="docutils literal notranslate"><span class="pre">Hanzi</span></code>, <code class="docutils literal notranslate"><span class="pre">Kanji</span></code> and <code class="docutils literal notranslate"><span class="pre">Number</span></code>).
+<p>The <a class="reference external" href="https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRDataModeInterface.php"><code class="docutils literal notranslate"><span class="pre">QRDataModeInterface</span></code></a> offers the <code class="docutils literal notranslate"><span class="pre">validateString()</span></code> method (implemented for <code class="docutils literal notranslate"><span class="pre">AlphaNum</span></code>, <code class="docutils literal notranslate"><span class="pre">Byte</span></code>, <code class="docutils literal notranslate"><span class="pre">Hanzi</span></code>, <code class="docutils literal notranslate"><span class="pre">Kanji</span></code> and <code class="docutils literal notranslate"><span class="pre">Number</span></code>).
 This method is used internally when a data mode is invoked, but it can come in handy if you need to check input data beforehand.</p>
 <div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">Hanzi</span><span class="o">::</span><span class="na">validateString</span><span class="p">(</span><span class="nv">$data</span><span class="p">)){</span>
 	<span class="k">throw</span> <span class="k">new</span> <span class="nx">Exception</span><span class="p">(</span><span class="s1">&#39;invalid GB2312 data&#39;</span><span class="p">);</span>
@@ -523,30 +532,6 @@ This method is used internally when a data mode is invoked, but it can come in h
 </pre></div>
 </div>
 </section>
-<section id="qr-code-reader">
-<h3>QR Code reader<a class="headerlink" href="#qr-code-reader" title="Link to this heading"></a></h3>
-<p>In some cases it might be necessary to increase the contrast of a QR Code image:</p>
-<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerUseImagickIfAvailable</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerIncreaseContrast</span>      <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerGrayscale</span>             <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
-
-<span class="nv">$qrcode</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">QRCode</span><span class="p">(</span><span class="nv">$options</span><span class="p">);</span>
-
-<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromFile</span><span class="p">(</span><span class="s1">&#39;path/to/qrcode.png&#39;</span><span class="p">);</span>
-<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromBlob</span><span class="p">(</span><span class="nv">$imagedata</span><span class="p">);</span>
-</pre></div>
-</div>
-<p>The <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> object from the <a class="reference external" href="https://github.com/chillerlan/php-qrcode/blob/main/src/Decoder/DecoderResult.php"><code class="docutils literal notranslate"><span class="pre">DecoderResult</span></code></a> can be reused:</p>
-<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$matrix</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="na">getQRMatrix</span><span class="p">();</span>
-
-<span class="c1">// ...matrix modification...</span>
-
-<span class="nv">$output</span> <span class="o">=</span> <span class="p">(</span><span class="k">new</span> <span class="nx">QRCode</span><span class="p">(</span><span class="nv">$options</span><span class="p">))</span><span class="o">-&gt;</span><span class="na">renderMatrix</span><span class="p">(</span><span class="nv">$matrix</span><span class="p">);</span>
-
-<span class="c1">// ...output</span>
-</pre></div>
-</div>
-</section>
 </section>
 <section id="common-output-options">
 <h2>Common output options<a class="headerlink" href="#common-output-options" title="Link to this heading"></a></h2>
@@ -594,16 +579,6 @@ This method is used internally when a data mode is invoked, but it can come in h
 </pre></div>
 </div>
 </section>
-<section id="add-a-logo-space">
-<h3>Add a logo space<a class="headerlink" href="#add-a-logo-space" title="Link to this heading"></a></h3>
-<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$options</span><span class="o">-&gt;</span><span class="na">addLogoSpace</span>    <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">logoSpaceWidth</span>  <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">logoSpaceHeight</span> <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">logoSpaceStartX</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
-<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">logoSpaceStartY</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
-</pre></div>
-</div>
-</section>
 </section>
 </section>
 
@@ -618,7 +593,7 @@ This method is used internally when a data mode is invoked, but it can come in h
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 15 - 6
Usage/Configuration-settings.html

@@ -20,7 +20,7 @@
     <script src="../_static/js/theme.js"></script>
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="Module values" href="../Customizing/Module-Values.html" />
+    <link rel="next" title="Reading QR Codes" href="Reading-QRCodes.html" />
     <link rel="prev" title="Advanced usage" href="Advanced-usage.html" /> 
 </head>
 
@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -728,13 +737,13 @@ When set to <code class="docutils literal notranslate"><span class="pre">false</
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="Advanced-usage.html" class="btn btn-neutral float-left" title="Advanced usage" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="../Customizing/Module-Values.html" class="btn btn-neutral float-right" title="Module values" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="Reading-QRCodes.html" class="btn btn-neutral float-right" title="Reading QR Codes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 4
Usage/Installation.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -510,7 +519,7 @@ After that, run <code class="docutils literal notranslate"><span class="pre">com
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

文件差異過大導致無法顯示
+ 429 - 0
Usage/Logos.html


+ 13 - 4
Usage/Overview.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -509,7 +518,7 @@ It also features a QR Code reader based on a <a class="reference external" href=
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 13 - 23
Usage/Quickstart.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -397,25 +406,6 @@ and <a class="reference internal" href="Configuration-settings.html"><span class
 Also, have a look <a class="reference external" href="https://github.com/chillerlan/php-qrcode/tree/main/examples">in the examples folder</a> for some more usage examples.</p>
 </section>
 </section>
-<section id="reading-qr-codes">
-<h2>Reading QR Codes<a class="headerlink" href="#reading-qr-codes" title="Link to this heading"></a></h2>
-<p>Using the built-in QR Code reader is pretty straight-forward:</p>
-<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="p">{</span>
-	<span class="nv">$result</span> <span class="o">=</span> <span class="p">(</span><span class="k">new</span> <span class="nx">QRCode</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">readFromFile</span><span class="p">(</span><span class="s1">&#39;path/to/file.png&#39;</span><span class="p">);</span> <span class="c1">// -&gt; DecoderResult</span>
-
-	<span class="c1">// you can now use the result instance...</span>
-	<span class="nv">$content</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="na">data</span><span class="p">;</span>
-
-	<span class="c1">// ...or simply cast the result instance to string to get the content</span>
-	<span class="nv">$content</span> <span class="o">=</span> <span class="p">(</span><span class="nx">string</span><span class="p">)</span><span class="nv">$result</span><span class="p">;</span>
-<span class="p">}</span>
-<span class="k">catch</span><span class="p">(</span><span class="nx">Throwable</span> <span class="nv">$exception</span><span class="p">){</span>
-	<span class="c1">// handle exception...</span>
-<span class="p">}</span>
-</pre></div>
-</div>
-<p>It’s generally a good idea to wrap the reading in a try/catch block to handle any errors that may occur in the process.</p>
-</section>
 <section id="notes">
 <h2>Notes<a class="headerlink" href="#notes" title="Link to this heading"></a></h2>
 <p>The QR encoder, especially the subroutines for mask pattern testing, can cause high CPU load on increased matrix size.
@@ -435,7 +425,7 @@ Oh hey and don’t forget to sanitize any user input!</p>
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 489 - 0
Usage/Reading-QRCodes.html

@@ -0,0 +1,489 @@
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" data-content_root="../">
+<head>
+  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Reading QR Codes &mdash; PHP-QRCode main
+ Manual</title>
+      <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
+      <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
+
+  
+      <script src="../_static/jquery.js?v=5d32c60e"></script>
+      <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
+      <script src="../_static/documentation_options.js?v=a8da1a53"></script>
+      <script src="../_static/doctools.js?v=9bcbadda"></script>
+      <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
+    <script src="../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="Logos and logo space" href="Logos.html" />
+    <link rel="prev" title="Configuration settings" href="Configuration-settings.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+
+          
+          
+          <a href="../index.html" class="icon icon-home">
+            PHP-QRCode
+          </a>
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <p class="caption" role="heading"><span class="caption-text">Usage</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="Overview.html">Overview</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Overview.html#features">Features</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Overview.html#requirements">Requirements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Overview.html#framework-integration">Framework Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Overview.html#shameless-advertising">Shameless advertising</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Installation.html">Installation</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Installation.html#installation-with-composer">Installation with Composer</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Installation.html#composer-json">composer.json</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="Installation.html#version-switch">Version switch</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="Installation.html#terminal">Terminal</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="Installation.html#manual-installation">Manual installation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Installation.html#can-i-use-this-library-without-using-composer">Can I use this library without using composer?</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="Installation.html#supported-php-versions-extension-requirements">Supported PHP versions &amp; extension requirements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Installation.html#imagemagick">ImageMagick</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Quickstart.html">Quickstart</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#import-the-library">Import the library</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#create-your-first-qr-code">Create your first QR Code</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Quickstart.html#configuration">Configuration</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="Quickstart.html#notes">Notes</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Advanced-usage.html">Advanced usage</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#configuration-via-qroptions">Configuration via <code class="docutils literal notranslate"><span class="pre">QROptions</span></code></a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#supply-an-iterable-of-options">Supply an <code class="docutils literal notranslate"><span class="pre">iterable</span></code> of options</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#load-and-save-options-from-to-json">Load and save options from/to JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#extending-the-qroptions-class">Extending the <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> class</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#mixed-mode">Mixed mode</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="Advanced-usage.html#common-output-options">Common output options</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#save-to-file">Save to file</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Configuration-settings.html">Configuration settings</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#version">version</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#versionmin">versionMin</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#versionmax">versionMax</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#ecclevel">eccLevel</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#maskpattern">maskPattern</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#addquietzone">addQuietzone</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#quietzonesize">quietzoneSize</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#outputinterface">outputInterface</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#returnresource">returnResource</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#cachefile">cachefile</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#outputbase64">outputBase64</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#eol">eol</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#bgcolor">bgColor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#invertmatrix">invertMatrix</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#drawlightmodules">drawLightModules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#drawcircularmodules">drawCircularModules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#circleradius">circleRadius</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#keepassquare">keepAsSquare</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#connectpaths">connectPaths</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#excludefromconnect">excludeFromConnect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#modulevalues">moduleValues</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#addlogospace">addLogoSpace</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#logospacewidth">logoSpaceWidth</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#logospaceheight">logoSpaceHeight</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#logospacestartx">logoSpaceStartX</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#logospacestarty">logoSpaceStartY</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#scale">scale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#imagetransparent">imageTransparent</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#transparencycolor">transparencyColor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#quality">quality</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#gdimageuseupscale">gdImageUseUpscale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#imagickformat">imagickFormat</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#cssclass">cssClass</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#svgaddxmlheader">svgAddXmlHeader</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#svgdefs">svgDefs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#svgpreserveaspectratio">svgPreserveAspectRatio</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#svgusefillattributes">svgUseFillAttributes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#textlinestart">textLineStart</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#jsonflags">jsonFlags</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#fpdfmeasureunit">fpdfMeasureUnit</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#xmlstylesheet">xmlStylesheet</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readeruseimagickifavailable">readerUseImagickIfAvailable</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readergrayscale">readerGrayscale</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerinvertcolors">readerInvertColors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../Customizing/Module-Values.html">Module values</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#basics">Basics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#assigning-values">Assigning values</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Module-Values.html#handling-in-your-own-qroutputinterface">Handling in your own <code class="docutils literal notranslate"><span class="pre">QROutputInterface</span></code></a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#setting-module-values">Setting module values</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/Module-Values.html#using-the-module-values">Using the module values</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Customizing/QROutputAbstract.html"><code class="docutils literal notranslate"><span class="pre">QROutputAbstract</span></code></a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#properties">Properties</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#options-and-matrix"><code class="docutils literal notranslate"><span class="pre">$options</span></code> and <code class="docutils literal notranslate"><span class="pre">$matrix</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulecount-scale-and-length"><code class="docutils literal notranslate"><span class="pre">$moduleCount</span></code>, <code class="docutils literal notranslate"><span class="pre">$scale</span></code> and <code class="docutils literal notranslate"><span class="pre">$length</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulevalues"><code class="docutils literal notranslate"><span class="pre">$moduleValues</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#copies-of-qroptions-values">Copies of <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> values</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/QROutputAbstract.html#methods">Methods</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#setmodulevalues"><code class="docutils literal notranslate"><span class="pre">setModuleValues()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#modulevalueisvalid"><code class="docutils literal notranslate"><span class="pre">moduleValueIsValid()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#preparemodulevalue"><code class="docutils literal notranslate"><span class="pre">prepareModuleValue()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getdefaultmodulevalue"><code class="docutils literal notranslate"><span class="pre">getDefaultModuleValue()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getmodulevalue-and-getmodulevalueat"><code class="docutils literal notranslate"><span class="pre">getModuleValue()</span></code> and <code class="docutils literal notranslate"><span class="pre">getModuleValueAt()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#setmatrixdimensions"><code class="docutils literal notranslate"><span class="pre">setMatrixDimensions()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#getoutputdimensions"><code class="docutils literal notranslate"><span class="pre">getOutputDimensions()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#collectmodules"><code class="docutils literal notranslate"><span class="pre">collectModules()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Customizing/QROutputAbstract.html#savetofile-and-tobase64datauri"><code class="docutils literal notranslate"><span class="pre">saveToFile()</span></code> and <code class="docutils literal notranslate"><span class="pre">toBase64DataURI()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Customizing/Custom-output-interface.html">Custom <code class="docutils literal notranslate"><span class="pre">QROutputInterface</span></code></a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#class-skeleton">Class skeleton</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#module-values">Module values</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#transform-the-output">Transform the output</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#run-the-custom-output">Run the custom output</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Customizing/Custom-output-interface.html#summary">Summary</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Built-In Output Classes</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QREps.html">QREps</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QREps.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRFpdf.html">QRFpdf</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRFpdf.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRGdImage.html">QRGdImage</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRGdImage.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRImagick.html">QRImagick</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRImagick.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html">QRInterventionImage</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRInterventionImage.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html">QRMarkupHTML</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupHTML.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html">QRMarkupSVG</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupSVG.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html">QRMarkupXML</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRMarkupXML.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html">QRStringJSON</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#previous-functionality">Previous functionality</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringJSON.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Built-In-Output/QRStringText.html">QRStringText</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#example">Example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#additional-methods">Additional methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Built-In-Output/QRStringText.html#options-that-affect-this-class">Options that affect this class</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Appendix</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../Appendix/Terminology.html">Terminology</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#qr-code">QR Code</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#matrix">Matrix</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#module">Module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#version">Version</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#function-patterns">Function Patterns</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#finder-pattern">Finder Pattern</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#alignment-pattern">Alignment Pattern</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#timing-pattern">Timing Pattern</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#separators">Separators</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#quiet-zone">Quiet Zone</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#encoding-region">Encoding Region</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#data">Data</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#version-information">Version Information</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#format-information">Format Information</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#darkmodule">Darkmodule</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#mode">Mode</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#segment">Segment</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#extended-channel-interpretation-eci">Extended Channel Interpretation (ECI)</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#mixed-mode">Mixed Mode</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#ecc-error-correction-coding">ECC (Error Correction Coding)</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#ecc-level">ECC Level</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#maximum-data-capacity">Maximum data capacity</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#data-masking">Data masking</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#evaluation">Evaluation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/Terminology.html#mask-pattern">Mask pattern</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Terminology.html#reflectance">Reflectance</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Appendix/URI-Content.html">Popular content and URI schemes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#url-https">URL <code class="docutils literal notranslate"><span class="pre">https</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#e-mail-mailto">E-Mail <code class="docutils literal notranslate"><span class="pre">mailto</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#phone-numbers-tel">Phone numbers <code class="docutils literal notranslate"><span class="pre">tel</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#geo-coordinates-geo">Geo Coordinates <code class="docutils literal notranslate"><span class="pre">geo</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#mobile-authenticators-otpauth">Mobile Authenticators <code class="docutils literal notranslate"><span class="pre">otpauth</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#wireless-network-configuration">Wireless Network configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#contact-information-vcard">Contact information: vCard</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#calendar-events-vcalendar-and-icalendar">Calendar Events: vCalendar and iCalendar</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#credit-transfer">Credit Transfer</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/URI-Content.html#sepa-european-payments-council">SEPA (European Payments Council)</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Appendix/URI-Content.html#pix-banco-central-do-brasil">Pix (Banco Central do Brasil)</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/URI-Content.html#see-also">See also</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Appendix/Performance-considerations.html">Performance considerations</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Performance-considerations.html#version">Version</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Performance-considerations.html#ecc-level">Ecc level</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Performance-considerations.html#data-mode">Data mode</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Performance-considerations.html#mask-pattern">Mask pattern</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Performance-considerations.html#output">Output</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Appendix/Contribute.html">How to contribute</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Contribute.html#questions-and-issues">Questions and issues</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Contribute.html#bug-reports">Bug reports</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Contribute.html#pull-requests-and-bug-fixes">Pull requests and bug fixes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../Appendix/Contribute.html#documentation">Documentation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../Appendix/License.html">License</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">PHP-QRCode</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">Reading QR Codes</li>
+      <li class="wy-breadcrumbs-aside">
+              <a href="https://github.com/chillerlan/php-qrcode/blob/main/docs/Usage/Reading-QRCodes.md" class="fa fa-github"> Edit on GitHub</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+             
+  <section id="reading-qr-codes">
+<h1>Reading QR Codes<a class="headerlink" href="#reading-qr-codes" title="Link to this heading"></a></h1>
+<section id="basic-usage">
+<h2>Basic usage<a class="headerlink" href="#basic-usage" title="Link to this heading"></a></h2>
+<p>The QR Code reader can be called either from a <code class="docutils literal notranslate"><span class="pre">QRCode</span></code> instance or invoked directly via the <code class="docutils literal notranslate"><span class="pre">Decoder</span></code> class with a <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> (<code class="docutils literal notranslate"><span class="pre">QRCodeReaderOptionsTrait</span></code>) instance.</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$options</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">QROptions</span>
+
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerUseImagickIfAvailable</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerIncreaseContrast</span>      <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerGrayscale</span>             <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">readerInvertColors</span>          <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The option <code class="docutils literal notranslate"><span class="pre">QROptions::$readerUseImagickIfAvailable</span></code> is exclusive to the <code class="docutils literal notranslate"><span class="pre">QRCode</span></code> instance in order to decide which <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code> to use.
+The <code class="docutils literal notranslate"><span class="pre">QRCode</span></code> instance has 3 convenience methods related to the reader:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$qrcode</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">QRCode</span><span class="p">(</span><span class="nv">$options</span><span class="p">)</span>
+
+<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromFile</span><span class="p">(</span><span class="s1">&#39;path/to/qrcode.png&#39;</span><span class="p">);</span>
+<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromBlob</span><span class="p">(</span><span class="nv">$imagedata</span><span class="p">);</span>
+
+<span class="c1">// from a luminance source instance</span>
+<span class="nv">$source</span> <span class="o">=</span> <span class="nx">IMagickLuminanceSource</span><span class="o">::</span><span class="na">fromBlob</span><span class="p">(</span><span class="nv">$imagedata</span><span class="p">,</span> <span class="nv">$options</span><span class="p">);</span>
+<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromSource</span><span class="p">(</span><span class="nv">$source</span><span class="p">);</span>
+</pre></div>
+</div>
+</section>
+<section id="the-luminancesourceinterface">
+<h2>The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code><a class="headerlink" href="#the-luminancesourceinterface" title="Link to this heading"></a></h2>
+<p>The method <code class="docutils literal notranslate"><span class="pre">QRCode::readFromSource()</span></code> takes a <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code> instance as parameter and is mainly for internal use, as you can invoke and call the decoder directly with it.
+Each <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code> has the static convenience methods <code class="docutils literal notranslate"><span class="pre">fromFile()</span></code> and <code class="docutils literal notranslate"><span class="pre">fromBlob()</span></code> that will invoke the instance with the respective parameters, alternatively the instance(s) can be invoked manually:</p>
+<p>from an <code class="docutils literal notranslate"><span class="pre">Imagick</span></code> instance:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$imagick</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Imagick</span><span class="p">;</span>
+<span class="nv">$imagick</span><span class="o">-&gt;</span><span class="na">readImageBlob</span><span class="p">(</span><span class="nv">$imagedata</span><span class="p">);</span>
+
+<span class="nv">$source</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">IMagickLuminanceSource</span><span class="p">(</span><span class="nv">$imagick</span><span class="p">,</span> <span class="nv">$options</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>from a <code class="docutils literal notranslate"><span class="pre">GdImage</span></code> instance:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$gdimage</span> <span class="o">=</span> <span class="nb">imagecreatefromstring</span><span class="p">(</span><span class="nv">$imagedata</span><span class="p">);</span>
+
+<span class="nv">$source</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GDLuminanceSource</span><span class="p">(</span><span class="nv">$gdimage</span><span class="p">,</span> <span class="nv">$options</span><span class="p">);</span>
+</pre></div>
+</div>
+</section>
+<section id="the-decoder">
+<h2>The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code><a class="headerlink" href="#the-decoder" title="Link to this heading"></a></h2>
+<p>The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code> takes a <code class="docutils literal notranslate"><span class="pre">QROptions</span></code> instance as parameter, which currently has no use - it is only handed over for possible future uses.</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$result</span> <span class="o">=</span> <span class="p">(</span><span class="k">new</span> <span class="nx">Decoder</span><span class="p">(</span><span class="nv">$options</span><span class="p">))</span><span class="o">-&gt;</span><span class="na">decode</span><span class="p">(</span><span class="nv">$source</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>That is all! The decoder will either return a <code class="docutils literal notranslate"><span class="pre">DecoderResult</span></code> instance or throw an exception.
+It is generally a good practice to wrap the reading in a try/catch block:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="k">try</span><span class="p">{</span>
+	<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">readFromFile</span><span class="p">(</span><span class="s1">&#39;path/to/file.png&#39;</span><span class="p">);</span> <span class="c1">// -&gt; DecoderResult</span>
+
+	<span class="c1">// ... do stuff with the result</span>
+<span class="p">}</span>
+<span class="k">catch</span><span class="p">(</span><span class="nx">QRCodeDecoderException</span><span class="p">){</span>
+	<span class="c1">// ... adjust input image (position, contrast, invert, sharpen) and repeat the process</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>You can now use the result instance:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$content</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="na">data</span><span class="p">;</span>
+<span class="c1">// ...or simply cast it to string:</span>
+<span class="nv">$content</span> <span class="o">=</span> <span class="p">(</span><span class="nx">string</span><span class="p">)</span><span class="nv">$result</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>The result instance also holds <code class="docutils literal notranslate"><span class="pre">Version</span></code>, <code class="docutils literal notranslate"><span class="pre">EccLevel</span></code>, <code class="docutils literal notranslate"><span class="pre">MaskPattern</span></code> and <code class="docutils literal notranslate"><span class="pre">BitBuffer</span></code> instances, as well as an array of <code class="docutils literal notranslate"><span class="pre">FinderPattern</span></code> instances,
+it also offers a method that returns a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance populated with the detected settings:</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$matrix</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="na">getQRMatrix</span><span class="p">();</span>
+
+<span class="c1">// ...matrix modification...</span>
+
+<span class="nv">$output</span> <span class="o">=</span> <span class="p">(</span><span class="k">new</span> <span class="nx">QRCode</span><span class="p">(</span><span class="nv">$options</span><span class="p">))</span><span class="o">-&gt;</span><span class="na">renderMatrix</span><span class="p">(</span><span class="nv">$matrix</span><span class="p">);</span>
+
+<span class="c1">// ...dump output</span>
+</pre></div>
+</div>
+</section>
+<section id="general-considerations">
+<h2>General considerations<a class="headerlink" href="#general-considerations" title="Link to this heading"></a></h2>
+<p>The QR Code reader reads the given QR symbol in a single pass, unlike e.g. a reader app on a mobile device with a camera, which repeats the reading process for a sequence of frames from the video input and takes the “best” result.
+It means that this reader may fail to properly decode a symbol that reads perfectly fine on a mobile - you’d need to emulate the same process of sequential reading while adjusting the input image to get a similar result.</p>
+<p>Further it seems (<a class="reference external" href="https://github.com/chillerlan/php-qrcode/blob/92346420a5a88aeeb8dc16f731ef1f93331635d3/tests/QRCodeReaderTestAbstract.php#L168-L172">per observation</a>) that the reader favors smaller module sizes (1-2 pixel side length) from version 20 onwards.
+The test data set seemed to randomly produce errors depending on the given module scale, independent of the luminance source.
+However, scaling down to get a smaller module size isn’t the best solution as it may produce additional challenges due to filter artifacts.</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="Configuration-settings.html" class="btn btn-neutral float-left" title="Configuration settings" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="Logos.html" class="btn btn-neutral float-right" title="Logos and logo space" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2025, smiley.</p>
+  </div>
+
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>

+ 24 - 22
_sources/Appendix/Performance-considerations.md.txt

@@ -44,35 +44,37 @@ is a complex and costly operation that is necessary to ensure the symbol is read
 to override the evaluation and manually set a mask pattern, this is not recommended unless you know exactly what you're doing
 as it can render a QR symbol unreadable.
 
-The table below shows the performance impact (in miliseconds) of the mask pattern evaluation for each version, the times may vary between systems.
+The table below shows the performance impact (in miliseconds) of the mask pattern evaluation for select versions, the times may vary between systems.
 
-| version   |       1 |       2 |       3 |       4 |       5 |       6 |       7 |       8 |       9 |      10 |
-|-----------|--------:|--------:|--------:|--------:|--------:|--------:|--------:|--------:|--------:|--------:|
-| **1-10**  |   4.414 |   5.697 |   7.986 |   9.221 |  10.877 |  11.293 |  13.901 |  15.563 |  18.142 |  20.501 |
-| **11-20** |  22.662 |  27.779 |  29.622 |  33.017 |  36.358 |  39.712 |  43.685 |  47.121 |  51.389 |  57.865 |
-| **21-30** |  59.753 |  68.502 |  68.523 |  72.866 |  78.245 |  83.593 |  88.327 |  94.921 | 103.394 | 106.358 |
-| **31-40** | 113.311 | 120.484 | 126.215 | 132.931 | 139.783 | 145.617 | 170.576 | 165.996 | 167.365 | 175.821 |
+| version | time (ms) |
+|---------|----------:|
+| **1**   |     2.285 |
+| **5**   |     5.867 |
+| **10**  |    12.737 |
+| **20**  |    34.045 |
+| **30**  |    64.914 |
+| **40**  |   107.027 |
 
 
 ## Output
 
 Output rendering depends heavily on the size of the QR matrix, the desired type and the underlying libraries and/or PHP extensions.
-Especially the rendering of raster images through GD or ImagMagick can be very slow, depending on [the scale setting](../Usage/Configuration-settings.md#scale),
+Especially the rendering of raster images through GD or ImageMagick can be very slow, depending on [the scale setting](../Usage/Configuration-settings.md#scale),
 filters and image type.
 
 Below a comparison of the performance for the several built-in output classes (times in miliseconds, scale = 5):
 
-|                   |     v5 |    v10 |     v15 |     v20 |     v25 |     v30 |     v35 |     v40 |
-|-------------------|-------:|-------:|--------:|--------:|--------:|--------:|--------:|--------:|
-| **QRMarkupSVG**   |  3.732 |  8.645 |  13.846 |  21.127 |  32.842 |  43.753 |  56.584 |  73.885 |
-| **QRMarkupHTML**  |  0.522 |  1.308 |   2.062 |   2.761 |   3.907 |   5.201 |   7.931 |   9.572 |
-| **QRGdImageBMP**  |  5.998 | 12.541 |  20.728 |  32.336 |  46.345 |  62.842 |  81.555 | 106.482 |
-| **QRGdImageGIF**  |  3.427 |  6.817 |  12.226 |  17.925 |  25.453 |  35.136 |  44.706 |  57.477 |
-| **QRGdImageJPEG** |  2.284 |  4.882 |   8.161 |  12.097 |  17.333 |  23.862 |  30.327 |  40.226 |
-| **QRGdImagePNG**  |  4.523 |  9.377 |  16.581 |  26.207 |  36.516 |  49.066 |  63.765 |  82.074 |
-| **QRGdImageWEBP** |  8.211 | 17.367 |  30.079 |  47.095 |  69.668 |  91.378 | 119.869 | 150.288 |
-| **QRStringJSON**  |  0.043 |  0.066 |   0.107 |   0.158 |   0.215 |   0.301 |   0.369 |   0.492 |
-| **QRStringText**  |  0.229 |  0.387 |   0.628 |   0.952 |   1.312 |   1.759 |   2.329 |   3.045 |
-| **QRImagick**     | 37.694 | 68.808 | 114.415 | 172.962 | 242.338 | 325.085 | 419.999 | 529.897 |
-| **QRFpdf**        |  6.578 | 12.466 |  21.169 |  33.021 |  45.469 |  61.198 |  80.092 | 100.059 |
-| **QREps**         |  1.269 |  2.694 |   4.515 |   6.933 |  11.049 |  14.181 |  20.799 |  25.886 |
+|                   |     v5 |    v10 |     v20 |     v30 |     v40 |
+|-------------------|-------:|-------:|--------:|--------:|--------:|
+| **QRMarkupSVG**   |  3.732 |  8.645 |  21.127 |  43.753 |  73.885 |
+| **QRMarkupHTML**  |  0.522 |  1.308 |   2.761 |   5.201 |   9.572 |
+| **QRGdImageBMP**  |  5.998 | 12.541 |  32.336 |  62.842 | 106.482 |
+| **QRGdImageGIF**  |  3.427 |  6.817 |  17.925 |  35.136 |  57.477 |
+| **QRGdImageJPEG** |  2.284 |  4.882 |  12.097 |  23.862 |  40.226 |
+| **QRGdImagePNG**  |  4.523 |  9.377 |  26.207 |  49.066 |  82.074 |
+| **QRGdImageWEBP** |  8.211 | 17.367 |  47.095 |  91.378 | 150.288 |
+| **QRStringJSON**  |  0.043 |  0.066 |   0.158 |   0.301 |   0.492 |
+| **QRStringText**  |  0.229 |  0.387 |   0.952 |   1.759 |   3.045 |
+| **QRImagick**     | 37.694 | 68.808 | 172.962 | 325.085 | 529.897 |
+| **QRFpdf**        |  6.578 | 12.466 |  33.021 |  61.198 | 100.059 |
+| **QREps**         |  1.269 |  2.694 |   6.933 |  14.181 |  25.886 |

+ 1 - 1
_sources/Appendix/Terminology.md.txt

@@ -2,7 +2,7 @@
 
 ## QR Code
 
-A [*QR code*](https://en.wikipedia.org/wiki/QR_code) (quick-response code) is a type of two-dimensional matrix barcode, invented
+A [*QR code*](https://en.wikipedia.org/wiki/QR_code) (quick-response code), sometimes referred to as  *QR symbol* or simply just *symbol*, is a type of two-dimensional matrix barcode, invented
 in 1994 by Japanese company [Denso Wave](https://www.qrcode.com/en/faq.html#patentH2Title) for labelling automobile parts.
 The QR labelling system was applied beyond the automobile industry due to its fast readability and greater storage capacity
 compared to standard UPC barcodes.

+ 1 - 41
_sources/Usage/Advanced-usage.md.txt

@@ -173,7 +173,7 @@ $output = $qrcode->render();
 $qrcode->render(null, '/path/to/qrcode.svg');
 ```
 
-The [`QRDataModeInterface`](https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRDataModeInterface.php) offers the `validateString()` method (implemended for `AlphaNum`, `Byte`, `Hanzi`, `Kanji` and `Number`).
+The [`QRDataModeInterface`](https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRDataModeInterface.php) offers the `validateString()` method (implemented for `AlphaNum`, `Byte`, `Hanzi`, `Kanji` and `Number`).
 This method is used internally when a data mode is invoked, but it can come in handy if you need to check input data beforehand.
 
 ```php
@@ -185,33 +185,6 @@ $qrcode->addHanziSegment($data);
 ```
 
 
-### QR Code reader
-
-In some cases it might be necessary to increase the contrast of a QR Code image:
-
-```php
-$options->readerUseImagickIfAvailable = true;
-$options->readerIncreaseContrast      = true;
-$options->readerGrayscale             = true;
-
-$qrcode = new QRCode($options);
-
-$result = $qrcode->readFromFile('path/to/qrcode.png');
-$result = $qrcode->readFromBlob($imagedata);
-```
-
-The `QRMatrix` object from the [`DecoderResult`](https://github.com/chillerlan/php-qrcode/blob/main/src/Decoder/DecoderResult.php) can be reused:
-
-```php
-$matrix = $result->getQRMatrix();
-
-// ...matrix modification...
-
-$output = (new QRCode($options))->renderMatrix($matrix);
-
-// ...output
-```
-
 ## Common output options
 
 ### Save to file
@@ -266,16 +239,3 @@ $imagick = $qrcode->render($data);
 
 echo $imagick->getImageBlob();
 ```
-
-
-### Add a logo space
-
-
-```php
-$options->addLogoSpace    = true;
-$options->logoSpaceWidth  = 9;
-$options->logoSpaceHeight = 9;
-$options->logoSpaceStartX = 10;
-$options->logoSpaceStartY = 10;
-
-```

文件差異過大導致無法顯示
+ 72 - 0
_sources/Usage/Logos.md.txt


+ 0 - 20
_sources/Usage/Quickstart.md.txt

@@ -41,26 +41,6 @@ and [configuration settings](../Usage/Configuration-settings.md) for a list of a
 Also, have a look [in the examples folder](https://github.com/chillerlan/php-qrcode/tree/main/examples) for some more usage examples.
 
 
-## Reading QR Codes
-
-Using the built-in QR Code reader is pretty straight-forward:
-```php
-try{
-	$result = (new QRCode)->readFromFile('path/to/file.png'); // -> DecoderResult
-
-	// you can now use the result instance...
-	$content = $result->data;
-
-	// ...or simply cast the result instance to string to get the content
-	$content = (string)$result;
-}
-catch(Throwable $exception){
-	// handle exception...
-}
-```
-It's generally a good idea to wrap the reading in a try/catch block to handle any errors that may occur in the process.
-
-
 ## Notes
 The QR encoder, especially the subroutines for mask pattern testing, can cause high CPU load on increased matrix size.
 You can avoid a part of this load by choosing a fast output module, like SVG.

+ 101 - 0
_sources/Usage/Reading-QRCodes.md.txt

@@ -0,0 +1,101 @@
+# Reading QR Codes
+
+## Basic usage
+
+The QR Code reader can be called either from a `QRCode` instance or invoked directly via the `Decoder` class with a `QROptions` (`QRCodeReaderOptionsTrait`) instance.
+
+```php
+$options = new QROptions
+
+$options->readerUseImagickIfAvailable = true;
+$options->readerIncreaseContrast      = true;
+$options->readerGrayscale             = true;
+$options->readerInvertColors          = false;
+```
+
+The option `QROptions::$readerUseImagickIfAvailable` is exclusive to the `QRCode` instance in order to decide which `LuminanceSourceInterface` to use.
+The `QRCode` instance has 3 convenience methods related to the reader:
+```php
+$qrcode = new QRCode($options)
+
+$result = $qrcode->readFromFile('path/to/qrcode.png');
+$result = $qrcode->readFromBlob($imagedata);
+
+// from a luminance source instance
+$source = IMagickLuminanceSource::fromBlob($imagedata, $options);
+$result = $qrcode->readFromSource($source);
+```
+
+## The `LuminanceSourceInterface`
+
+The method `QRCode::readFromSource()` takes a `LuminanceSourceInterface` instance as parameter and is mainly for internal use, as you can invoke and call the decoder directly with it.
+Each `LuminanceSourceInterface` has the static convenience methods `fromFile()` and `fromBlob()` that will invoke the instance with the respective parameters, alternatively the instance(s) can be invoked manually:
+
+from an `Imagick` instance:
+```php
+$imagick = new Imagick;
+$imagick->readImageBlob($imagedata);
+
+$source = new IMagickLuminanceSource($imagick, $options);
+```
+
+from a `GdImage` instance:
+
+```php
+$gdimage = imagecreatefromstring($imagedata);
+
+$source = new GDLuminanceSource($gdimage, $options);
+```
+
+## The `Decoder`
+
+The `Decoder` takes a `QROptions` instance as parameter, which currently has no use - it is only handed over for possible future uses.
+
+```php
+$result = (new Decoder($options))->decode($source);
+```
+
+That is all! The decoder will either return a `DecoderResult` instance or throw an exception.
+It is generally a good practice to wrap the reading in a try/catch block:
+
+```php
+try{
+	$result = $qrcode->readFromFile('path/to/file.png'); // -> DecoderResult
+
+	// ... do stuff with the result
+}
+catch(QRCodeDecoderException){
+	// ... adjust input image (position, contrast, invert, sharpen) and repeat the process
+}
+```
+
+You can now use the result instance:
+
+```php
+$content = $result->data;
+// ...or simply cast it to string:
+$content = (string)$result;
+```
+
+The result instance also holds `Version`, `EccLevel`, `MaskPattern` and `BitBuffer` instances, as well as an array of `FinderPattern` instances,
+it also offers a method that returns a `QRMatrix` instance populated with the detected settings:
+
+```php
+$matrix = $result->getQRMatrix();
+
+// ...matrix modification...
+
+$output = (new QRCode($options))->renderMatrix($matrix);
+
+// ...dump output
+```
+
+
+## General considerations
+
+The QR Code reader reads the given QR symbol in a single pass, unlike e.g. a reader app on a mobile device with a camera, which repeats the reading process for a sequence of frames from the video input and takes the "best" result.
+It means that this reader may fail to properly decode a symbol that reads perfectly fine on a mobile - you'd need to emulate the same process of sequential reading while adjusting the input image to get a similar result.
+
+Further it seems ([per observation](https://github.com/chillerlan/php-qrcode/blob/92346420a5a88aeeb8dc16f731ef1f93331635d3/tests/QRCodeReaderTestAbstract.php#L168-L172)) that the reader favors smaller module sizes (1-2 pixel side length) from version 20 onwards.
+The test data set seemed to randomly produce errors depending on the given module scale, independent of the luminance source.
+However, scaling down to get a smaller module size isn't the best solution as it may produce additional challenges due to filter artifacts.

+ 2 - 0
_sources/index.rst.txt

@@ -21,6 +21,8 @@ This work is licensed under the Creative Commons Attribution 4.0 International (
    Usage/Quickstart.md
    Usage/Advanced-usage.md
    Usage/Configuration-settings.md
+   Usage/Reading-QRCodes.md
+   Usage/Logos.md
 
 .. toctree::
    :maxdepth: 3

+ 13 - 4
genindex.html

@@ -72,7 +72,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -86,14 +85,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -146,6 +143,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -371,7 +380,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

+ 26 - 8
index.html

@@ -74,7 +74,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -88,14 +87,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -148,6 +145,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -360,7 +369,7 @@
              
   <section id="chillerlan-php-qrcode-manual">
 <h1>chillerlan PHP-QRCode Manual<a class="headerlink" href="#chillerlan-php-qrcode-manual" title="Link to this heading"></a></h1>
-<p>User manual for <a class="reference external" href="https://github.com/chillerlan/php-qrcode/">chillerlan/php-qrcode</a>  [main]. Updated on Nov 21, 2025.</p>
+<p>User manual for <a class="reference external" href="https://github.com/chillerlan/php-qrcode/">chillerlan/php-qrcode</a>  [main]. Updated on Nov 23, 2025.</p>
 <p>The phpDocumentor API documentation can be found at <a class="reference external" href="https://chillerlan.github.io/php-qrcode/">chillerlan.github.io/php-qrcode</a>.</p>
 <p>This work is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License.</p>
 <div class="toctree-wrapper compound">
@@ -393,7 +402,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -407,14 +415,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -467,6 +473,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 </div>
 <div class="toctree-wrapper compound">
@@ -671,7 +689,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

二進制
objects.inv


+ 13 - 4
search.html

@@ -75,7 +75,6 @@
 <li class="toctree-l3"><a class="reference internal" href="Usage/Quickstart.html#configuration">Configuration</a></li>
 </ul>
 </li>
-<li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#reading-qr-codes">Reading QR Codes</a></li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Quickstart.html#notes">Notes</a></li>
 </ul>
 </li>
@@ -89,14 +88,12 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#qrcode-methods"><code class="docutils literal notranslate"><span class="pre">QRCode</span></code> methods</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#render-a-qrmatrix-instance">Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#mixed-mode">Mixed mode</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#qr-code-reader">QR Code reader</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="Usage/Advanced-usage.html#common-output-options">Common output options</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#save-to-file">Save to file</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#base64-uri-output">Base64 URI output</a></li>
 <li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#return-the-image-resource">Return the image resource</a></li>
-<li class="toctree-l3"><a class="reference internal" href="Usage/Advanced-usage.html#add-a-logo-space">Add a logo space</a></li>
 </ul>
 </li>
 </ul>
@@ -149,6 +146,18 @@
 <li class="toctree-l2"><a class="reference internal" href="Usage/Configuration-settings.html#readerincreasecontrast">readerIncreaseContrast</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Reading-QRCodes.html">Reading QR Codes</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#basic-usage">Basic usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-luminancesourceinterface">The <code class="docutils literal notranslate"><span class="pre">LuminanceSourceInterface</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#the-decoder">The <code class="docutils literal notranslate"><span class="pre">Decoder</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Reading-QRCodes.html#general-considerations">General considerations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="Usage/Logos.html">Logos and logo space</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#info">Info</a></li>
+<li class="toctree-l2"><a class="reference internal" href="Usage/Logos.html#adding-a-logo-space">Adding a logo space</a></li>
+</ul>
+</li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Customizing output</span></p>
 <ul>
@@ -378,7 +387,7 @@
   <hr/>
 
   <div role="contentinfo">
-    <p>&#169; Copyright 2023, smiley.</p>
+    <p>&#169; Copyright 2025, smiley.</p>
   </div>
 
    

文件差異過大導致無法顯示
+ 0 - 0
searchindex.js


部分文件因文件數量過多而無法顯示