二维码生成器文档

DemetraGowl 8年前
   <p>纯纯的Javascript版,不依赖任何第三方包(不依赖jQuery喔~),就可以轻松地生成二维码了,支持各种自定义,可以通过自定义颜色生成各种漂亮的、有个性的二维码。本站已支持使用此功能获取每个页面的二维码。</p>    <p>仅需要浏览器支持 <code>canvas</code> ,几乎所有现代浏览器都是支持的(而且本网站也仅支持现代浏览器)。</p>    <p>快来试试吧!</p>    <p><a href="/misc/goto?guid=4959671025413589096">点此测试</a></p>    <p>安装  </p>    <pre>  <code class="language-haskell"># Via NPM  $ npm install jsqrgen    # Via bower  $ bower install jsqrgen  </code></pre>    <p>也可以直接下载 <code>dist/qrgen.min.js</code> 。</p>    <p>浏览器兼容</p>    <table border="1">     <tbody>      <tr>       <td>Firefox</td>       <td>Yes</td>      </tr>      <tr>       <td>Chrome</td>       <td>Yes</td>      </tr>      <tr>       <td>Internet Explorer</td>       <td>9+</td>      </tr>      <tr>       <td>Opera</td>       <td>12 <a href="/misc/goto?guid=4959671025510826713" id="id4">[1]</a> , 15+</td>      </tr>      <tr>       <td>Safari</td>       <td>Yes</td>      </tr>     </tbody>    </table>    <table id="id5">     <tbody>      <tr>       <td><a href="/misc/goto?guid=4959671025592127833">[1]</a></td>       <td>Opera 12 (Presto) 的 <code>canvas.arcTo</code> 有问题,因此特效可能会不正常。</td>      </tr>     </tbody>    </table>    <p>函数和方法</p>    <p>支持UMD加载,得到的对象(如全局对象 <code>qrgen</code> )有以下方法:</p>    <ul>     <li> <p><em>function</em> qrgen.canvas( <em>options</em> )</p> <p>生成一个二维码并画到 <em>canvas</em> 上。其中 <em>options</em> 是一个 <em>object</em> ,可以有以下属性(均可选):</p>      <table border="1">       <thead>        <tr>         <th>属性</th>         <th>类型</th>         <th>默认值</th>         <th>描述</th>        </tr>       </thead>       <tbody>        <tr>         <td><code>data</code></td>         <td>String</td>         <td>''</td>         <td>用于生成二维码的原始数据,字符串将使用UTF-8编码。</td>        </tr>        <tr>         <td><code>cellSize</code> <a href="/misc/goto?guid=4959671025681925620" id="id7">[2]</a></td>         <td>Number</td>         <td>2</td>         <td>每个小格的像素宽度或高度。</td>        </tr>        <tr>         <td><code>size</code> <a href="/misc/goto?guid=4959671025681925620" id="id8">[2]</a></td>         <td>Number</td>         <td>None</td>         <td>最终生成的图片的像素宽度或高度,如果指定了 <em>cellSize</em> 那么此项被忽略。</td>        </tr>        <tr>         <td><code>typeNumber</code></td>         <td>Number [1..40]</td>         <td>Auto</td>         <td>二维码的 <em>typeNumber</em> ,如果太小将自动增加直到找到一个合适的 <em>typeNumber</em> 。</td>        </tr>        <tr>         <td><code>correctLevel</code></td>         <td>String {'L', 'M', 'Q', 'H'}</td>         <td>'M'</td>         <td>二维码的容错级别,如果指定了 <code>logo</code> 则设置为 <code>H</code> 。</td>        </tr>        <tr>         <td><code>colorDark</code> <a href="/misc/goto?guid=4959671025775184847" id="id9">[3]</a></td>         <td>Image | Canvas | String | Array</td>         <td>'black'</td>         <td>暗格的背景色。</td>        </tr>        <tr>         <td><code>colorLight</code> <a href="/misc/goto?guid=4959671025775184847" id="id10">[3]</a></td>         <td>Image | Canvas | String | Array</td>         <td>'white'</td>         <td>亮格的背景色。</td>        </tr>        <tr>         <td><code>logo</code></td>         <td>Object</td>         <td>{}</td>         <td> <p>可以有以下属性(均可选):</p> <p>若logo是图片:</p>          <ul>           <li><code>image</code> :一个 <code>Image</code> 元素,用于传递将要画到二维码中的图片。</li>          </ul> <p>若logo是文本:</p>          <ul>           <li><code>text</code> :将要画成Logo的文本。</li>           <li><code>color</code> :Logo文本的颜色,默认是 <code>black</code> 。</li>           <li><code>fontStyle</code> :Logo文本的样式,如 <code>italic bold</code> 。</li>           <li><code>fontFace</code> :Logo文本的字体,默认是 <code>Cursive</code> 。</li>          </ul> <p>共同属性:</p>          <ul>           <li><code>clearEdges</code> :一个Number,指定Logo周围被破坏的小格的清理级别,默认为 <code>0</code> 。</li>           <li><code>margin</code> :图片及周围小格之间的像素间距,默认为 <code>2</code> 。</li>           <li><code>size</code> :一个float,表示Logo占二维码总面积的比例,默认是 <code>.15</code> (建议使用)。</li>          </ul> </td>        </tr>        <tr>         <td><code>effect</code></td>         <td>Object</td>         <td>{}</td>         <td> <p>可以有 <code>key</code> 和 <code>value</code> 属性。</p>          <ul>           <li> <p><code>effect.key = 'round'</code></p> <p><code>effect.value</code> 在0-0.5之间,使小格有一个 <code>value</code> * <code>cellSize</code> 的 <code>border-radius</code> 。</p> </li>           <li> <p><code>effect.key = 'liquid'</code></p> <p><code>effect.value</code> 在0-0.5之间,液态效果,即相邻的小格之间互相融合。</p> </li>          </ul> </td>        </tr>        <tr>         <td><code>reuseCanvas</code></td>         <td>Canvas</td>         <td>None</td>         <td>如果设置了 <code>reuseCanvas</code> ,最终的图片将绘制到这个canvas上。</td>        </tr>        <tr>         <td><code>noAlpha</code></td>         <td>Boolean</td>         <td>true</td>         <td>是否去除图片的alpha通道。</td>        </tr>       </tbody>      </table> </li>    </ul>    <p><strong>返回</strong> 一个canvas。</p>    <table id="size">     <tbody>      <tr>       <td>[2]</td>       <td><em>(<a href="/misc/goto?guid=4959671025870488572">1</a>, <a href="/misc/goto?guid=4959671025956250613">2</a>)</em> 建议使用 <code>cellSize</code> 而非 <code>size</code> ,因为当计算出的 <code>cellSize</code> 不是整数时,最后的图像可能因为被拉伸而变模糊。</td>      </tr>     </tbody>    </table>    <table id="color">     <tbody>      <tr>       <td>[3]</td>       <td><em>(<a href="/misc/goto?guid=4959671026035133158">1</a>, <a href="/misc/goto?guid=4959671026125319722">2</a>)</em> <p><code>colorDark</code> 和 <code>colorLight</code> 都可以是一个图片(Image或者Canvas)、一个代表CSS颜色的字符串或者一个数组,数组中的元素可以有以下属性:</p>        <table border="1">         <tbody>          <tr>           <td>属性</td>           <td>类型</td>           <td>默认值</td>           <td>描述</td>          </tr>          <tr>           <td><code>col</code></td>           <td>Number</td>           <td>使用 <code>x</code></td>           <td>起始列的index</td>          </tr>          <tr>           <td><code>row</code></td>           <td>Number</td>           <td>使用 <code>y</code></td>           <td>起始行的index</td>          </tr>          <tr>           <td><code>cols</code></td>           <td>Number</td>           <td>使用 <code>width</code></td>           <td>应用当前样式的列数</td>          </tr>          <tr>           <td><code>rows</code></td>           <td>Number</td>           <td>使用 <code>height</code></td>           <td>应用当前样式的行数</td>          </tr>          <tr>           <td><code>x</code></td>           <td>Number</td>           <td>0</td>           <td>起始位置的X</td>          </tr>          <tr>           <td><code>y</code></td>           <td>Number</td>           <td>0</td>           <td>起始位置的Y</td>          </tr>          <tr>           <td><code>width</code></td>           <td>Number</td>           <td>画布宽度</td>           <td>应用当前样式的宽度</td>          </tr>          <tr>           <td><code>height</code></td>           <td>Number</td>           <td>画布高度</td>           <td>应用当前样式的高度</td>          </tr>          <tr>           <td><code>style</code></td>           <td>String</td>           <td>'black'</td>           <td>通过其他属性指定的区域将要应用的CSS填充样式</td>          </tr>         </tbody>        </table> </td>      </tr>     </tbody>    </table>