chillerlan-qrcode-decoder.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Documentation</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <base href="../">
  8. <link rel="icon" href="images/favicon.ico"/>
  9. <link rel="stylesheet" href="css/normalize.css">
  10. <link rel="stylesheet" href="css/base.css">
  11. <link rel="preconnect" href="https://fonts.gstatic.com">
  12. <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@100;200;300;400;600;700&display=swap" rel="stylesheet">
  13. <link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;600;700&display=swap" rel="stylesheet">
  14. <link rel="stylesheet" href="css/template.css">
  15. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0/css/all.min.css" integrity="sha256-ybRkN9dBjhcS2qrW1z+hfCxq+1aBdwyQM5wlQoQVt/0=" crossorigin="anonymous" />
  16. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-okaidia.css">
  17. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.css">
  18. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.css">
  19. <script src="https://cdn.jsdelivr.net/npm/fuse.js@3.4.6"></script>
  20. <script src="https://cdn.jsdelivr.net/npm/css-vars-ponyfill@2"></script>
  21. <script src="js/template.js"></script>
  22. <script src="js/search.js"></script>
  23. <script defer src="js/searchIndex.js"></script>
  24. </head>
  25. <body id="top">
  26. <header class="phpdocumentor-header phpdocumentor-section">
  27. <h1 class="phpdocumentor-title"><a href="" class="phpdocumentor-title__link">Documentation</a></h1>
  28. <input class="phpdocumentor-header__menu-button" type="checkbox" id="menu-button" name="menu-button" />
  29. <label class="phpdocumentor-header__menu-icon" for="menu-button">
  30. <i class="fas fa-bars"></i>
  31. </label>
  32. <section data-search-form class="phpdocumentor-search">
  33. <label>
  34. <span class="visually-hidden">Search for</span>
  35. <svg class="phpdocumentor-search__icon" width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
  36. <circle cx="7.5" cy="7.5" r="6.5" stroke="currentColor" stroke-width="2"/>
  37. <line x1="12.4892" y1="12.2727" x2="19.1559" y2="18.9393" stroke="currentColor" stroke-width="3"/>
  38. </svg>
  39. <input type="search" class="phpdocumentor-field phpdocumentor-search__field" placeholder="Loading .." disabled />
  40. </label>
  41. </section>
  42. <nav class="phpdocumentor-topnav">
  43. <ul class="phpdocumentor-topnav__menu">
  44. <li class="phpdocumentor-topnav__menu-item -menu">
  45. <a href="https://php-qrcode.readthedocs.io">
  46. <span>
  47. User Manual
  48. </span>
  49. </a>
  50. </li>
  51. <li class="phpdocumentor-topnav__menu-item -social">
  52. <a href="https://github.com/chillerlan/php-qrcode">
  53. <span>
  54. <i class="fab fa-github"></i>
  55. </span>
  56. </a>
  57. </li>
  58. </ul>
  59. </nav>
  60. </header>
  61. <main class="phpdocumentor">
  62. <div class="phpdocumentor-section">
  63. <input class="phpdocumentor-sidebar__menu-button" type="checkbox" id="sidebar-button" name="sidebar-button" />
  64. <label class="phpdocumentor-sidebar__menu-icon" for="sidebar-button">
  65. Menu
  66. </label>
  67. <aside class="phpdocumentor-column -three phpdocumentor-sidebar">
  68. <section class="phpdocumentor-sidebar__category">
  69. <h2 class="phpdocumentor-sidebar__category-header">Namespaces</h2>
  70. <h4 class="phpdocumentor-sidebar__root-namespace">
  71. <a href="namespaces/chillerlan.html" class="">chillerlan</a>
  72. </h4>
  73. <ul class="phpdocumentor-list">
  74. <li>
  75. <a href="namespaces/chillerlan-qrcode.html" class="">QRCode</a>
  76. </li>
  77. <li>
  78. <a href="namespaces/chillerlan-qrcodetest.html" class="">QRCodeTest</a>
  79. </li>
  80. </ul>
  81. </section>
  82. <section class="phpdocumentor-sidebar__category">
  83. <h2 class="phpdocumentor-sidebar__category-header">Packages</h2>
  84. <h4 class="phpdocumentor-sidebar__root-namespace">
  85. <a href="packages/Application.html" class="">Application</a>
  86. </h4>
  87. </section>
  88. <section class="phpdocumentor-sidebar__category">
  89. <h2 class="phpdocumentor-sidebar__category-header">Reports</h2>
  90. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/deprecated.html">Deprecated</a></h3>
  91. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/errors.html">Errors</a></h3>
  92. <h3 class="phpdocumentor-sidebar__root-package"><a href="reports/markers.html">Markers</a></h3>
  93. </section>
  94. <section class="phpdocumentor-sidebar__category">
  95. <h2 class="phpdocumentor-sidebar__category-header">Indices</h2>
  96. <h3 class="phpdocumentor-sidebar__root-package"><a href="indices/files.html">Files</a></h3>
  97. </section>
  98. </aside>
  99. <div class="phpdocumentor-column -nine phpdocumentor-content">
  100. <section>
  101. <ul class="phpdocumentor-breadcrumbs">
  102. <li class="phpdocumentor-breadcrumb"><a href="namespaces/chillerlan.html">chillerlan</a></li>
  103. <li class="phpdocumentor-breadcrumb"><a href="namespaces/chillerlan-qrcode.html">QRCode</a></li>
  104. </ul>
  105. <article class="phpdocumentor-element -namespace">
  106. <h2 class="phpdocumentor-content__title">Decoder</h2>
  107. <h3 id="toc">
  108. Table of Contents
  109. <a href="namespaces/chillerlan-qrcode-decoder.html#toc" class="headerlink"><i class="fas fa-link"></i></a>
  110. </h3>
  111. <h4 id="toc-interfaces">
  112. Interfaces
  113. <a href="namespaces/chillerlan-qrcode-decoder.html#toc-interfaces" class="headerlink"><i class="fas fa-link"></i></a>
  114. </h4>
  115. <dl class="phpdocumentor-table-of-contents">
  116. <dt class="phpdocumentor-table-of-contents__entry -interface"><a href="classes/chillerlan-QRCode-Decoder-LuminanceSourceInterface.html"><abbr title="\chillerlan\QRCode\Decoder\LuminanceSourceInterface">LuminanceSourceInterface</abbr></a></dt> </dl>
  117. <h4 id="toc-classes">
  118. Classes
  119. <a href="namespaces/chillerlan-qrcode-decoder.html#toc-classes" class="headerlink"><i class="fas fa-link"></i></a>
  120. </h4>
  121. <dl class="phpdocumentor-table-of-contents">
  122. <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-Binarizer.html"><abbr title="\chillerlan\QRCode\Decoder\Binarizer">Binarizer</abbr></a></dt><dd>This class implements a local thresholding algorithm, which while slower than the
  123. GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for
  124. high frequency images of barcodes with black data on white backgrounds. For this application,
  125. it does a much better job than a global blackpoint with severe shadows and gradients.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-BitMatrix.html"><abbr title="\chillerlan\QRCode\Decoder\BitMatrix">BitMatrix</abbr></a></dt><dd>Extended QRMatrix to map read data from the Binarizer</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-Decoder.html"><abbr title="\chillerlan\QRCode\Decoder\Decoder">Decoder</abbr></a></dt><dd>The main class which implements QR Code decoding -- as opposed to locating and extracting
  126. the QR Code from an image.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-DecoderResult.html"><abbr title="\chillerlan\QRCode\Decoder\DecoderResult">DecoderResult</abbr></a></dt><dd>Encapsulates the result of decoding a matrix of bits. This typically
  127. applies to 2D barcode formats. For now, it contains the raw bytes obtained
  128. as well as a String interpretation of those bytes, if applicable.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-GDLuminanceSource.html"><abbr title="\chillerlan\QRCode\Decoder\GDLuminanceSource">GDLuminanceSource</abbr></a></dt><dd>This class is used to help decode images from files which arrive as GD Resource
  129. It does not support rotation.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-IMagickLuminanceSource.html"><abbr title="\chillerlan\QRCode\Decoder\IMagickLuminanceSource">IMagickLuminanceSource</abbr></a></dt><dd>This class is used to help decode images from files which arrive as Imagick Resource
  130. It does not support rotation.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-LuminanceSourceAbstract.html"><abbr title="\chillerlan\QRCode\Decoder\LuminanceSourceAbstract">LuminanceSourceAbstract</abbr></a></dt><dd>The purpose of this class hierarchy is to abstract different bitmap implementations across
  131. platforms into a standard interface for requesting greyscale luminance values.</dd> <dt class="phpdocumentor-table-of-contents__entry -class"><a href="classes/chillerlan-QRCode-Decoder-QRCodeDecoderException.html"><abbr title="\chillerlan\QRCode\Decoder\QRCodeDecoderException">QRCodeDecoderException</abbr></a></dt><dd>An exception container</dd> </dl>
  132. <div class="phpdocumentor-modal" id="source-view">
  133. <div class="phpdocumentor-modal-bg" data-exit-button></div>
  134. <div class="phpdocumentor-modal-container">
  135. <div class="phpdocumentor-modal-content">
  136. <pre style="max-height: 500px; overflow-y: scroll" data-src="" class="language-php line-numbers linkable-line-numbers"></pre>
  137. </div>
  138. <button data-exit-button class="phpdocumentor-modal__close">&times;</button>
  139. </div>
  140. </div>
  141. <script type="text/javascript">
  142. (function () {
  143. function loadExternalCodeSnippet(el, url, line) {
  144. Array.prototype.slice.call(el.querySelectorAll('pre[data-src]')).forEach((pre) => {
  145. const src = url || pre.getAttribute('data-src').replace(/\\/g, '/');
  146. const language = 'php';
  147. const code = document.createElement('code');
  148. code.className = 'language-' + language;
  149. pre.textContent = '';
  150. pre.setAttribute('data-line', line)
  151. code.textContent = 'Loading…';
  152. pre.appendChild(code);
  153. var xhr = new XMLHttpRequest();
  154. xhr.open('GET', src, true);
  155. xhr.onreadystatechange = function () {
  156. if (xhr.readyState !== 4) {
  157. return;
  158. }
  159. if (xhr.status < 400 && xhr.responseText) {
  160. code.textContent = xhr.responseText;
  161. Prism.highlightElement(code);
  162. return;
  163. }
  164. if (xhr.status === 404) {
  165. code.textContent = '✖ Error: File could not be found';
  166. return;
  167. }
  168. if (xhr.status >= 400) {
  169. code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
  170. return;
  171. }
  172. code.textContent = '✖ Error: An unknown error occurred';
  173. };
  174. xhr.send(null);
  175. });
  176. }
  177. const modalButtons = document.querySelectorAll("[data-modal]");
  178. const openedAsLocalFile = window.location.protocol === 'file:';
  179. if (modalButtons.length > 0 && openedAsLocalFile) {
  180. console.warn(
  181. 'Viewing the source code is unavailable because you are opening this page from the file:// scheme; ' +
  182. 'browsers block XHR requests when a page is opened this way'
  183. );
  184. }
  185. modalButtons.forEach(function (trigger) {
  186. if (openedAsLocalFile) {
  187. trigger.setAttribute("hidden", "hidden");
  188. }
  189. trigger.addEventListener("click", function (event) {
  190. event.preventDefault();
  191. const modal = document.getElementById(trigger.dataset.modal);
  192. if (!modal) {
  193. console.error(`Modal with id "${trigger.dataset.modal}" could not be found`);
  194. return;
  195. }
  196. modal.classList.add("phpdocumentor-modal__open");
  197. loadExternalCodeSnippet(modal, trigger.dataset.src || null, trigger.dataset.line)
  198. const exits = modal.querySelectorAll("[data-exit-button]");
  199. exits.forEach(function (exit) {
  200. exit.addEventListener("click", function (event) {
  201. event.preventDefault();
  202. modal.classList.remove("phpdocumentor-modal__open");
  203. });
  204. });
  205. });
  206. });
  207. })();
  208. </script>
  209. </article>
  210. </section>
  211. <section class="phpdocumentor-on-this-page__sidebar">
  212. <section class="phpdocumentor-on-this-page__content">
  213. <strong class="phpdocumentor-on-this-page__title">On this page</strong>
  214. <ul class="phpdocumentor-list -clean">
  215. <li class="phpdocumentor-on-this-page-section__title">Table Of Contents</li>
  216. <li>
  217. <ul class="phpdocumentor-list -clean">
  218. <li><a href="namespaces/chillerlan-qrcode-decoder.html#toc-interfaces">Interfaces</a></li>
  219. <li><a href="namespaces/chillerlan-qrcode-decoder.html#toc-classes">Classes</a></li>
  220. </ul>
  221. </li>
  222. </ul>
  223. </section>
  224. </section>
  225. </div>
  226. <section data-search-results class="phpdocumentor-search-results phpdocumentor-search-results--hidden">
  227. <section class="phpdocumentor-search-results__dialog">
  228. <header class="phpdocumentor-search-results__header">
  229. <h2 class="phpdocumentor-search-results__title">Search results</h2>
  230. <button class="phpdocumentor-search-results__close"><i class="fas fa-times"></i></button>
  231. </header>
  232. <section class="phpdocumentor-search-results__body">
  233. <ul class="phpdocumentor-search-results__entries"></ul>
  234. </section>
  235. </section>
  236. </section>
  237. </div>
  238. <a href="namespaces/chillerlan-qrcode-decoder.html#top" class="phpdocumentor-back-to-top"><i class="fas fa-chevron-circle-up"></i></a>
  239. </main>
  240. <script>
  241. cssVars({});
  242. </script>
  243. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/prism.min.js"></script>
  244. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
  245. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-numbers/prism-line-numbers.min.js"></script>
  246. <script src="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/plugins/line-highlight/prism-line-highlight.min.js"></script>
  247. </body>
  248. </html>