天天看點

ruby on rails之二維碼

三種方式:

1.頁面table

gem 'rqrcode'

controller:

url = "www.baidu.com"

@qr = RQRCode::QRCode.new(url, :size => 3, :level => 'l'.to_sym)

view:

<style type="text/css">

 table {

   border-width: 0;

   border-style: none;

   border-color: #0000ff;

   border-collapse: collapse;

 }

 td {

   padding: 0;

   margin: 0;

   width: 10px;

   height: 10px;

 td.black { background-color: #000; }

 td.white { background-color: #fff; }

</style>

<table>

 <% @qr.modules.each_index do |x| %>

   <tr>

     <% @qr.modules.each_index do |y| %>

       <% if @qr.dark?(x,y) %>

         <td class="black"/>

       <% else %>

         <td class="white"/>

       <% end %>

     <% end %>

   </tr>

 <% end %>

</table>

<code></code>

<code>2、直接在頁面引用</code>

<code>gem 'rqrcode-rails3'</code>

<code>gem 'mini_magick'</code>

<code>controller:</code>

respond_to do |format|

  format.html

  format.svg  { render :qrcode =&gt; url, :level =&gt; :l, :unit =&gt; 10 }

  format.png  { render :qrcode =&gt; url }

  format.gif  { render :qrcode =&gt; url }

  format.jpeg { render :qrcode =&gt; url }

 end

view

 &lt;img src="action_path.jpeg" /&gt;

3、生成圖檔

  format =  :png

  size   =  3

  level  =  :h

  url = "ytuuiuouo"

  qrcode = RQRCode::QRCode.new(url, :size =&gt; size, :level =&gt; level)

  svg    = RQRCode::Renderers::SVG::render(qrcode, {})

  p_w_picpath = MiniMagick::Image.read(svg) { |i| i.format "svg" }

  p_w_picpath.format "png" if format == :png

  path=p_w_picpath.path