Rails로 QR 볼륨 생성

3108 단어 RailsRubytech

하고 싶은 일.


현재 자체 제작한 앱에서는 특정 URL을 생성하고 QR 인코딩을 해 상대방이 읽도록 해 특정 페이지로 날아가는 기능을 구현해 조사했다.곧 그림으로 변환해서 저장하는 방법을 찾았지만 그림을 저장하지 않고view에만 표시하는 방법은 의외로 정보가 적기 때문에 적어 두었습니다.

차리다


이번에 사용한gem는 다음과 같은 두 가지가 있습니다.
  • RQRCode( https://github.com/whomwah/rqrcode )
  • ChunkyPNG( https://github.com/wvanbergen/chunky_png )
  • RQR코드에서 pg 형식으로 QR 코드를 생성하면 ChunkyPNG:Image의 실례로 처리할 수 있기 때문에 이 두 점을gem file에 함께 추가합니다.
    gem 'rqrcode'
    gem 'chunky_png'
    
    이렇게 준비하면 완성됩니다.

    step1: 도우미 추가


    생성된 URL을 실례 변수를 통해view의 상태로 전달합니다.
    이 상태에서 표시하려는view의 조수 방법을 만듭니다.
    require 'chunky_png'
    
    def qrcode_tag(url, _options = {})
      qr = ::RQRCode::QRCode.new(url)
      ChunkyPNG::Image.from_datastream(qr.as_png.resize(250, 250).to_datastream).to_data_url
      end
    
    매개 변수로 URL을 교부하여 이를 바탕으로 png을 생성한다.

    step2:view 파일에 태그 추가


    view 파일에서 step1에서 만든 조수를 사용합니다.
    <%= image_tag qrcode_tag url %>
    
    인스턴스 변수의 URL을 매개변수로 인스턴스 변수에 전달합니다.
    이상!

    잡담


    그나저나 SVG 형태로 출력하는 경우에는 Chunky PNG가 필요하지 않습니다.(해보진 않았지만)
    현재 이미지태그 필요 없어요. 보통 조수 방법만 쓰면 돼요.
    또 다른 좋은 방법이 있으면 알려주세요.

    좋은 웹페이지 즐겨찾기