Просмотр исходного кода

Deploying to readthedocs from @ chillerlan/php-qrcode@4bd4b59fdec72397f5b1f70da9cadcb76764191b 🚀

codemasher 2 лет назад
Родитель
Сommit
f74f839c68

+ 8 - 2
Appendix/Contribute.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Appendix/License.html

@@ -81,17 +81,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Appendix/Terminology.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Appendix/URI-Content.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QREps.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRFpdf.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRGdImage.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRImagick.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRMarkupHTML.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRMarkupSVG.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
Built-In-Output/QRString.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 15 - 9
Customizing/Module-Values.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="../Usage/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="../Usage/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="../Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../Usage/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="../Usage/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="../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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../Usage/Configuration-settings.html">Configuration settings</a><ul>
@@ -319,9 +325,10 @@
 <h1>Module values<a class="headerlink" href="#module-values" title="Link to this heading"></a></h1>
 <section id="basics">
 <h2>Basics<a class="headerlink" href="#basics" title="Link to this heading"></a></h2>
-<p>The QR Code matrix is a 2-dimensional array of numerical values that hold a bit mask for
+<p>The QR Code matrix is a 2-dimensional array of numerical values that hold a bitmask for
 each QR pixel (“module” as per specification), the so-called “module type” or <code class="docutils literal notranslate"><span class="pre">$M_TYPE</span></code>, which is represented by
 <a class="reference external" href="https://chillerlan.github.io/php-qrcode/classes/chillerlan-QRCode-Data-QRMatrix.html#toc-constants">the <code class="docutils literal notranslate"><span class="pre">QRMatrix::M_*</span></code> constants</a>.
+The bitmask is 12 bits wide; the first 11 bits stand for the pattern type, the highest bit designates whether the module is dark or light.
 You can assign different values for the several <a class="reference internal" href="../Appendix/Terminology.html#function-patterns"><span class="std std-ref">function patterns</span></a> to colorize them or even draw pixel-art.</p>
 </section>
 <section id="assigning-values">
@@ -329,11 +336,12 @@ You can assign different values for the several <a class="reference internal" hr
 <p>To map the values and properly render the modules for the given <code class="docutils literal notranslate"><span class="pre">QROutputInterface</span></code>, it may be necessary to overwrite the
 <a class="reference external" href="https://chillerlan.github.io/php-qrcode/classes/chillerlan-QRCode-Output-QROutputInterface.html#constant_DEFAULT_MODULE_VALUES">default values</a>,
 that are replaced by the user defined values in <code class="docutils literal notranslate"><span class="pre">QROptions::$moduleValues</span></code> during the render process.</p>
-<p>The map of <code class="docutils literal notranslate"><span class="pre">QRMatrix::M_*</span></code> constants =&gt; default values looks similar to the following:</p>
+<p>The map of <code class="docutils literal notranslate"><span class="pre">QRMatrix::M_*</span></code> constants =&gt; default values looks similar to the following
+(values with “_DARK” and “_LIGHT” suffix are for convenience):</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">moduleValues</span> <span class="o">=</span> <span class="p">[</span>
 	<span class="c1">// light</span>
-	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_NULL</span>             <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
-	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DARKMODULE_LIGHT</span> <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
+	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_NULL</span>             <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span> <span class="c1">// special value - always 0</span>
+	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DARKMODULE_LIGHT</span> <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span> <span class="c1">// key equivalent to (QRMatrix::M_DARKMODULE &amp; ~QRMatrix::IS_DARK)</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DATA</span>             <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_FINDER</span>           <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_SEPARATOR</span>        <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
@@ -344,10 +352,9 @@ that are replaced by the user defined values in <code class="docutils literal no
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_QUIETZONE</span>        <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_LOGO</span>             <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_FINDER_DOT_LIGHT</span> <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
-	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_TEST</span>             <span class="o">=&gt;</span> <span class="k">false</span><span class="p">,</span>
 	<span class="c1">// dark</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DARKMODULE</span>       <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
-	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DATA_DARK</span>        <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
+	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_DATA_DARK</span>        <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span> <span class="c1">// key equivalent to (QRMatrix::M_DATA | QRMatrix::IS_DARK)</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_FINDER_DARK</span>      <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_SEPARATOR_DARK</span>   <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_ALIGNMENT_DARK</span>   <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
@@ -357,7 +364,6 @@ that are replaced by the user defined values in <code class="docutils literal no
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_QUIETZONE_DARK</span>   <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_LOGO_DARK</span>        <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
 	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_FINDER_DOT</span>       <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
-	<span class="nx">QRMatrix</span><span class="o">::</span><span class="na">M_TEST_DARK</span>        <span class="o">=&gt;</span> <span class="k">true</span><span class="p">,</span>
 <span class="p">];</span>
 </pre></div>
 </div>

+ 71 - 15
Usage/Advanced-usage.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="#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="#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="#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#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="#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="#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="#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Configuration-settings.html">Configuration settings</a><ul>
@@ -349,8 +355,8 @@ A list with all available <code class="docutils literal notranslate"><span class
 </pre></div>
 </div>
 </section>
-<section id="load-and-save-json">
-<h3>Load and save JSON<a class="headerlink" href="#load-and-save-json" title="Link to this heading"></a></h3>
+<section id="load-and-save-options-from-to-json">
+<h3>Load and save options from/to JSON<a class="headerlink" href="#load-and-save-options-from-to-json" title="Link to this heading"></a></h3>
 <p>The settings can be saved to and loaded from JSON, e.g. to store them in a database:</p>
 <div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$json</span> <span class="o">=</span> <span class="nv">$options</span><span class="o">-&gt;</span><span class="na">toJSON</span><span class="p">(</span><span class="nx">JSON_THROW_ON_ERROR</span><span class="p">);</span>
 <span class="c1">// via JsonSerializable interface</span>
@@ -424,16 +430,6 @@ After invocation of the <code class="docutils literal notranslate"><span class="
 <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">setOptions</span><span class="p">(</span><span class="nv">$options</span><span class="p">);</span>
 </pre></div>
 </div>
-<section id="save-to-file">
-<h3>Save to file<a class="headerlink" href="#save-to-file" title="Link to this heading"></a></h3>
-<p>You can specify an output file path in which the QR Code content is stored (this will override the <code class="docutils literal notranslate"><span class="pre">QROptions::$cachefile</span></code>
-setting, see <a class="reference internal" href="#../Customizing/Common.md#save-to-file"><span class="xref myst">common output options</span></a>):</p>
-<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="s1">&#39;/path/to/qrcode.svg&#39;</span><span class="p">);</span>
-
-<span class="nb">printf</span><span class="p">(</span><span class="s1">&#39;&lt;img src=&quot;%s&quot; alt=&quot;QR Code&quot; /&gt;&#39;</span><span class="p">,</span> <span class="s1">&#39;/path/to/qrcode.svg&#39;</span><span class="p">);</span>
-</pre></div>
-</div>
-</section>
 <section id="render-a-qrmatrix-instance">
 <h3>Render a <code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code> instance<a class="headerlink" href="#render-a-qrmatrix-instance" title="Link to this heading"></a></h3>
 <p>You can render a <a class="reference external" href="https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRMatrix.php"><code class="docutils literal notranslate"><span class="pre">QRMatrix</span></code></a> instance directly:</p>
@@ -492,7 +488,10 @@ This method is used internally when a data mode is invoked, but it can come in h
 <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">$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="nv">$options</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/qrcode.png&#39;</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>
@@ -507,6 +506,63 @@ This method is used internally when a data mode is invoked, but it can come in h
 </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>
+<section id="save-to-file">
+<h3>Save to file<a class="headerlink" href="#save-to-file" title="Link to this heading"></a></h3>
+<p>You can specify an output file path in which the QR Code content is stored:</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">outputBase64</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">cachefile</span>    <span class="o">=</span> <span class="s1">&#39;/path/to/qrcode.svg&#39;</span><span class="p">;</span>
+
+<span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
+
+<span class="nb">printf</span><span class="p">(</span><span class="s1">&#39;&lt;img src=&quot;%s&quot; alt=&quot;QR Code&quot; /&gt;&#39;</span><span class="p">,</span> <span class="nv">$options</span><span class="o">-&gt;</span><span class="na">cachefile</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The file path can also be supplied as second parameter to the render methods (this will override the <code class="docutils literal notranslate"><span class="pre">QROptions::$cachefile</span></code> setting):</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="s1">&#39;/path/to/qrcode.svg&#39;</span><span class="p">);</span>
+</pre></div>
+</div>
+</section>
+<section id="base64-uri-output">
+<h3>Base64 URI output<a class="headerlink" href="#base64-uri-output" title="Link to this heading"></a></h3>
+<p>By default, a <a class="reference external" href="https://en.wikipedia.org/wiki/Data_URI_scheme">Base64 encoded data URI</a> will be returned (where applicable):</p>
+<div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="k">echo</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span> <span class="c1">// -&gt; data:image/png;base64,...</span>
+</pre></div>
+</div>
+<p>Disable Base64 output:</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">outputBase64</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
+
+<span class="nb">header</span><span class="p">(</span><span class="s1">&#39;Content-type: image/png&#39;</span><span class="p">);</span>
+
+<span class="k">echo</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
+</pre></div>
+</div>
+</section>
+<section id="return-the-image-resource">
+<h3>Return the image resource<a class="headerlink" href="#return-the-image-resource" title="Link to this heading"></a></h3>
+<p>In some cases you might want to modify the QR image after creation (without crating a custom output class), in which case you want the internal image resource rather than the final output.</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">outputType</span>     <span class="o">=</span> <span class="nx">QROutputInterface</span><span class="o">::</span><span class="na">IMAGICK</span><span class="p">;</span>
+<span class="nv">$options</span><span class="o">-&gt;</span><span class="na">returnResource</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
+
+<span class="sd">/** @var Imagick $imagick */</span>
+<span class="nv">$imagick</span> <span class="o">=</span> <span class="nv">$qrcode</span><span class="o">-&gt;</span><span class="na">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
+
+<span class="k">echo</span> <span class="nv">$imagick</span><span class="o">-&gt;</span><span class="na">getImageBlob</span><span class="p">();</span>
+</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>
 
 

+ 8 - 2
Usage/Configuration-settings.html

@@ -82,17 +82,23 @@
 <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-json">Load and save JSON</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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Configuration settings</a><ul>

+ 15 - 7
Usage/Installation.html

@@ -82,17 +82,23 @@
 <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-json">Load and save JSON</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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Configuration-settings.html">Configuration settings</a><ul>
@@ -350,12 +356,14 @@ In case you want to keep using <code class="docutils literal notranslate"><span
 <section id="terminal">
 <h3>Terminal<a class="headerlink" href="#terminal" title="Link to this heading"></a></h3>
 <p>To install <code class="docutils literal notranslate"><span class="pre">php-qrcode</span></code> on the terminal, use:</p>
-<p><code class="docutils literal notranslate"><span class="pre">composer</span> <span class="pre">require</span> <span class="pre">chillerlan/php-qrcode</span></code></p>
+<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>composer<span class="w"> </span>require<span class="w"> </span>chillerlan/php-qrcode
+</pre></div>
+</div>
 <p>If you want to install the package from a specific tag or commit, do as follows:</p>
-<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">composer</span> <span class="pre">require</span> <span class="pre">chillerlan/php-qrcode:4.3.4</span></code></p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">composer</span> <span class="pre">require</span> <span class="pre">chillerlan/php-qrcode:dev-main#f15b0afe9d4128bf734c3bf1bcffae72bf7b3e53</span></code></p></li>
-</ul>
+<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>composer<span class="w"> </span>require<span class="w"> </span>chillerlan/php-qrcode:4.3.4
+composer<span class="w"> </span>require<span class="w"> </span>chillerlan/php-qrcode:dev-main#f15b0afe9d4128bf734c3bf1bcffae72bf7b3e53
+</pre></div>
+</div>
 </section>
 </section>
 <section id="manual-installation">

+ 9 - 2
Usage/Overview.html

@@ -82,17 +82,23 @@
 <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-json">Load and save JSON</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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Configuration-settings.html">Configuration settings</a><ul>
@@ -404,6 +410,7 @@ It also features a QR Code reader based on a <a class="reference external" href=
 <li><p><a class="reference external" href="https://github.com/it-novum/openITCOCKPIT">openITCOCKPIT</a></p></li>
 <li><p><a class="reference external" href="https://github.com/area17/twill">twill</a></p></li>
 <li><p><a class="reference external" href="https://github.com/jbroadway/elefant">Elefant CMS</a></p></li>
+<li><p><a class="reference external" href="https://github.com/JKoblitz/osiris">OSIRIS</a></p></li>
 </ul>
 </li>
 <li><p>Articles:</p>

+ 17 - 10
Usage/Quickstart.html

@@ -82,17 +82,23 @@
 <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-json">Load and save JSON</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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Configuration-settings.html">Configuration settings</a><ul>
@@ -332,6 +338,7 @@
 <div class="highlight-php notranslate"><div class="highlight"><pre><span></span><span class="nv">$data</span>   <span class="o">=</span> <span class="s1">&#39;otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&amp;issuer=chillerlan.net&#39;</span><span class="p">;</span>
 <span class="nv">$qrcode</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">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
 
+<span class="c1">// default output is a base64 encoded data URI</span>
 <span class="nb">printf</span><span class="p">(</span><span class="s1">&#39;&lt;img src=&quot;%s&quot; alt=&quot;QR Code&quot; /&gt;&#39;</span><span class="p">,</span> <span class="nv">$qrcode</span><span class="p">);</span>
 </pre></div>
 </div>
@@ -347,7 +354,8 @@
 <span class="k">echo</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">render</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
 </pre></div>
 </div>
-<p>See <a class="reference internal" href="Advanced-usage.html"><span class="std std-doc">Advanced usage</span></a> for a more in-depth usage guide.
+<p>See <a class="reference internal" href="Advanced-usage.html"><span class="std std-doc">Advanced usage</span></a> for a more in-depth usage guide
+and <a class="reference internal" href="Configuration-settings.html"><span class="std std-doc">configuration settings</span></a> for a list of available options.
 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>
@@ -356,17 +364,16 @@ Also, have a look <a class="reference external" href="https://github.com/chiller
 <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="c1">// throw ...</span>
 <span class="p">}</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>
 </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>

+ 7 - 7
_sources/Customizing/Module-Values.md.txt

@@ -2,9 +2,10 @@
 
 ## Basics
 
-The QR Code matrix is a 2-dimensional array of numerical values that hold a bit mask for
+The QR Code matrix is a 2-dimensional array of numerical values that hold a bitmask for
 each QR pixel ("module" as per specification), the so-called "module type" or `$M_TYPE`, which is represented by
 [the `QRMatrix::M_*` constants](https://chillerlan.github.io/php-qrcode/classes/chillerlan-QRCode-Data-QRMatrix.html#toc-constants).
+The bitmask is 12 bits wide; the first 11 bits stand for the pattern type, the highest bit designates whether the module is dark or light.
 You can assign different values for the several [function patterns](../Appendix/Terminology.md#function-patterns) to colorize them or even draw pixel-art.
 
 
@@ -14,13 +15,14 @@ To map the values and properly render the modules for the given `QROutputInterfa
 [default values](https://chillerlan.github.io/php-qrcode/classes/chillerlan-QRCode-Output-QROutputInterface.html#constant_DEFAULT_MODULE_VALUES),
 that are replaced by the user defined values in `QROptions::$moduleValues` during the render process.
 
-The map of `QRMatrix::M_*` constants => default values looks similar to the following:
+The map of `QRMatrix::M_*` constants => default values looks similar to the following
+(values with "_DARK" and "_LIGHT" suffix are for convenience):
 
 ```php
 $options->moduleValues = [
 	// light
-	QRMatrix::M_NULL             => false,
-	QRMatrix::M_DARKMODULE_LIGHT => false,
+	QRMatrix::M_NULL             => false, // special value - always 0
+	QRMatrix::M_DARKMODULE_LIGHT => false, // key equivalent to (QRMatrix::M_DARKMODULE & ~QRMatrix::IS_DARK)
 	QRMatrix::M_DATA             => false,
 	QRMatrix::M_FINDER           => false,
 	QRMatrix::M_SEPARATOR        => false,
@@ -31,10 +33,9 @@ $options->moduleValues = [
 	QRMatrix::M_QUIETZONE        => false,
 	QRMatrix::M_LOGO             => false,
 	QRMatrix::M_FINDER_DOT_LIGHT => false,
-	QRMatrix::M_TEST             => false,
 	// dark
 	QRMatrix::M_DARKMODULE       => true,
-	QRMatrix::M_DATA_DARK        => true,
+	QRMatrix::M_DATA_DARK        => true, // key equivalent to (QRMatrix::M_DATA | QRMatrix::IS_DARK)
 	QRMatrix::M_FINDER_DARK      => true,
 	QRMatrix::M_SEPARATOR_DARK   => true,
 	QRMatrix::M_ALIGNMENT_DARK   => true,
@@ -44,7 +45,6 @@ $options->moduleValues = [
 	QRMatrix::M_QUIETZONE_DARK   => true,
 	QRMatrix::M_LOGO_DARK        => true,
 	QRMatrix::M_FINDER_DOT       => true,
-	QRMatrix::M_TEST_DARK        => true,
 ];
 ```
 

+ 74 - 14
_sources/Usage/Advanced-usage.md.txt

@@ -39,7 +39,7 @@ $options->fromIterable($myOptions);
 ```
 
 
-### Load and save JSON
+### Load and save options from/to JSON
 
 The settings can be saved to and loaded from JSON, e.g. to store them in a database:
 
@@ -122,18 +122,6 @@ $qrcode->setOptions($options);
 ```
 
 
-### Save to file
-
-You can specify an output file path in which the QR Code content is stored (this will override the `QROptions::$cachefile`
-setting, see [common output options](../Customizing/Common.md#save-to-file)):
-
-```php
-$qrcode->render($data, '/path/to/qrcode.svg');
-
-printf('<img src="%s" alt="QR Code" />', '/path/to/qrcode.svg');
-```
-
-
 ### Render a `QRMatrix` instance
 
 You can render a [`QRMatrix`](https://github.com/chillerlan/php-qrcode/blob/main/src/Data/QRMatrix.php) instance directly:
@@ -151,6 +139,7 @@ $output = $qrcode->renderMatrix($matrix);
 $qrcode->renderMatrix($matrix, '/path/to/qrcode.svg');
 ```
 
+
 ### Mixed mode
 
 Mixed mode QR Codes can be generated by adding several data segments:
@@ -199,7 +188,10 @@ $options->readerUseImagickIfAvailable = true;
 $options->readerIncreaseContrast      = true;
 $options->readerGrayscale             = true;
 
-$result = (new QRCode($options))->readFromFile('path/to/qrcode.png');
+$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:
@@ -213,3 +205,71 @@ $output = (new QRCode($options))->renderMatrix($matrix);
 
 // ...output
 ```
+
+## Common output options
+
+### Save to file
+
+You can specify an output file path in which the QR Code content is stored:
+
+```php
+$options->outputBase64 = false;
+$options->cachefile    = '/path/to/qrcode.svg';
+
+$qrcode->render($data);
+
+printf('<img src="%s" alt="QR Code" />', $options->cachefile);
+```
+
+The file path can also be supplied as second parameter to the render methods (this will override the `QROptions::$cachefile` setting):
+
+```php
+$qrcode->render($data, '/path/to/qrcode.svg');
+```
+
+
+### Base64 URI output
+
+By default, a [Base64 encoded data URI](https://en.wikipedia.org/wiki/Data_URI_scheme) will be returned (where applicable):
+
+```php
+echo $qrcode->render($data); // -> data:image/png;base64,...
+```
+
+Disable Base64 output:
+
+```php
+$options->outputBase64 = false;
+
+header('Content-type: image/png');
+
+echo $qrcode->render($data);
+```
+
+
+### Return the image resource
+
+In some cases you might want to modify the QR image after creation (without crating a custom output class), in which case you want the internal image resource rather than the final output.
+
+```php
+$options->outputType     = QROutputInterface::IMAGICK;
+$options->returnResource = true;
+
+/** @var Imagick $imagick */
+$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;
+
+```

+ 7 - 3
_sources/Usage/Installation.md.txt

@@ -42,12 +42,16 @@ Most of the v2.0 API remains unchanged throughout the several versions up to v5.
 
 To install `php-qrcode` on the terminal, use:
 
-`composer require chillerlan/php-qrcode`
+```shell
+composer require chillerlan/php-qrcode
+```
 
 If you want to install the package from a specific tag or commit, do as follows:
 
-- `composer require chillerlan/php-qrcode:4.3.4`
-- `composer require chillerlan/php-qrcode:dev-main#f15b0afe9d4128bf734c3bf1bcffae72bf7b3e53`
+```shell
+composer require chillerlan/php-qrcode:4.3.4
+composer require chillerlan/php-qrcode:dev-main#f15b0afe9d4128bf734c3bf1bcffae72bf7b3e53
+```
 
 
 ## Manual installation

+ 1 - 0
_sources/Usage/Overview.md.txt

@@ -59,6 +59,7 @@ For the QR Code reader, either `ext-gd` or `ext-imagick` is required!
   - [openITCOCKPIT](https://github.com/it-novum/openITCOCKPIT)
   - [twill](https://github.com/area17/twill)
   - [Elefant CMS](https://github.com/jbroadway/elefant)
+  - [OSIRIS](https://github.com/JKoblitz/osiris)
 - Articles:
   - [Twilio: How to Create a QR Code in PHP](https://www.twilio.com/blog/create-qr-code-in-php) (featuring v4.3.x)
 

+ 9 - 8
_sources/Usage/Quickstart.md.txt

@@ -17,6 +17,7 @@ We want to encode this URI for a mobile authenticator into a QRcode image:
 $data   = 'otpauth://totp/test?secret=B3JX4VCVJDVNXNZ5&issuer=chillerlan.net';
 $qrcode = (new QRCode)->render($data);
 
+// default output is a base64 encoded data URI
 printf('<img src="%s" alt="QR Code" />', $qrcode);
 ```
 
@@ -35,7 +36,8 @@ header('Content-type: image/svg+xml'); // the image type is SVG by default
 echo (new QRCode($options))->render($data);
 ```
 
-See [Advanced usage](../Usage/Advanced-usage.md) for a more in-depth usage guide.
+See [Advanced usage](../Usage/Advanced-usage.md) for a more in-depth usage guide
+and [configuration settings](../Usage/Configuration-settings.md) for a list of available options.
 Also, have a look [in the examples folder](https://github.com/chillerlan/php-qrcode/tree/main/examples) for some more usage examples.
 
 
@@ -45,17 +47,16 @@ 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...
-	// throw ...
 }
-
-// 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;
 ```
 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.
 

+ 8 - 2
genindex.html

@@ -79,17 +79,23 @@
 <li class="toctree-l1"><a class="reference internal" href="Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="Usage/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="Usage/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="Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Usage/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="Usage/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="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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 17 - 5
index.html

@@ -81,17 +81,23 @@
 <li class="toctree-l1"><a class="reference internal" href="Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="Usage/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="Usage/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="Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Usage/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="Usage/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="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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Usage/Configuration-settings.html">Configuration settings</a><ul>
@@ -316,7 +322,7 @@
              
   <section id="php-qrcode-manual">
 <h1>PHP-QRCode Manual<a class="headerlink" href="#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 Oct 04, 2023.</p>
+<p>User manual for <a class="reference external" href="https://github.com/chillerlan/php-qrcode/">chillerlan/php-qrcode</a>  [main]. Updated on Oct 07, 2023.</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">
@@ -356,17 +362,23 @@
 <li class="toctree-l1"><a class="reference internal" href="Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="Usage/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="Usage/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="Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Usage/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="Usage/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="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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Usage/Configuration-settings.html">Configuration settings</a><ul>

+ 8 - 2
search.html

@@ -82,17 +82,23 @@
 <li class="toctree-l1"><a class="reference internal" href="Usage/Advanced-usage.html">Advanced usage</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="Usage/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="Usage/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="Usage/Advanced-usage.html#load-and-save-json">Load and save JSON</a></li>
+<li class="toctree-l3"><a class="reference internal" href="Usage/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="Usage/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="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#save-to-file">Save to file</a></li>
 <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>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="Usage/Configuration-settings.html">Configuration settings</a><ul>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
searchindex.js


Некоторые файлы не были показаны из-за большого количества измененных файлов