RubyでQRコードを生成するのにrQrCodeを使用しています。しかし、私はバックグラウンドの色を変更したり、生成されたQRコードの途中で画像を追加したいと思っています。私は研究をしましたが、何も見つかりませんでした。Rubyでロゴや背景色を持つQRコードを生成する
まだ誰もRubyで実装していますか?それともそれについて考えているのですか?
ありがとうございます。
RubyでQRコードを生成するのにrQrCodeを使用しています。しかし、私はバックグラウンドの色を変更したり、生成されたQRコードの途中で画像を追加したいと思っています。私は研究をしましたが、何も見つかりませんでした。Rubyでロゴや背景色を持つQRコードを生成する
まだ誰もRubyで実装していますか?それともそれについて考えているのですか?
ありがとうございます。
私はRubyでQRコードを生成するのにrQrCodeを使用しています。しかし、私は背景色を変更したい[...]確認
rQrCode documentationあなたがいずれかの画像、ANSI、SVGとして、またはQRコードを作成する場合、以下の:color
のオプションを使ってQRコードの塗りつぶしの色を変更するHTMLテーブルには、次のように:
require "rqrcode"
qrcode = RQRCode::QRCode.new("http://stackoverflow.com/questions/42691235/generate-qr-codes-with-a-logo-or-having-background-colors-in-ruby")
image = qrcode.as_png(color: "000")
svg = qrcode.as_svg(color: "000")
html = qrcode.as_html # `td.black { border-color: #000; }` in stylesheet
string = qrcode.as_ansi(dark: "\033[40m")
をあなたが代わり
qrcode = RQRCode::QRCode.new("http://stackoverflow.com/questions/42691235/generate-qr-codes-with-a-logo-or-having-background-colors-in-ruby")
image = qrcode.as_png(fill: "000")
svg = qrcode.as_svg(fill: "000")
html = qrcode.as_html # `table { background-color: #000; }` in stylesheet
string = qrcode.as_ansi(light: "\033[40m")
をfill
オプションを使用し、背景色を変更することができ、これらのいずれかのO一緒に使用することができますrだけで、それはあなた次第です。
しかし、私は、使用する色のコントラストによっては、あなたや他人のQRスキャナで読み取ることができないことがあることを警告します。また、QRコードを黒色の四角に変更すると、QRコードが破損する可能性があります。スキャナに登録されていない場合もあります。画像を追加またはマージとして
[...]又はその生成QRコードの途中に画像を追加します。
前と同じように、あなたのQRコードを生成し、それを与えるTransparent background colour
# require "chunky_png" # this already required by `rqrcode`
require "rqrcode"
qrcode = RQRCode::QRCode.new("http://stackoverflow.com/questions/42691235/generate-qr-codes-with-a-logo-or-having-background-colors-in-ruby")
TRANSPARENT = ::ChunkyPNG::Color::TRANSPARENT
qr_image = qrcode.as_png(fill: TRANSPARENT, module_px_size: 4)
_あなたはそれが私の次example._に有用だった
が次にとしてあなたのロゴをロードし、module_px_size: 4
オプションを無視することができます別の画像を作成し、合理的な幅の新しい画像を作成します。&高さオフセット。私は、そうでなければ、境界エラーのうち可能性の高い出会いであろう、それらを構成する前に、大きな画像であるかを決定するためのロジックを省略している
logo = ChunkyPNG::Image.from_file("logo.png")
height = (logo.dimension.height/2).floor - (qr_image.dimension.height/2).floor
width = (logo.dimension.width/2).floor - (qr_image.dimension.width/2).floor
qr_composed = logo.compose(qr_image, width, height)
qr_composed.save("qr_composed.png")
大きな画像の中に知られている小さな画像を中央に、以下のようなので、しかし
~/gems/2.3.0/gems/chunky_png-1.3.8/lib/chunky_png/canvas/operations.rb:393:in `check_size_constraints!': Background image width is too small! (ChunkyPNG::OutOfBounds)
は、新しい空白のイメージを作成し、ロゴ& QRコード画像のいずれかに水平をマージすることができます。例えば
new_width = logo.dimension.width + qr_image.dimension.width
qr_merged_horizontally = ChunkyPNG::Image.new(new_width, logo.dimension.height, ::ChunkyPNG::Color::WHITE)
qr_merged_horizontally.compose!(logo, 0, 0)
qr_merged_horizontally.compose!(qr_image, logo.dimension.width)
qr_merged_horizontally.save("qr_merged_horizontally.png")
または垂直方向に。例えばそれぞれ、それらの幅又は高さを組み合わせることによって
new_height = logo.dimension.height + qr_image.dimension.height
qr_merged_vertically = ChunkyPNG::Image.new(logo.dimension.width, new_height, ::ChunkyPNG::Color::WHITE)
qr_merged_vertically.compose!(logo, 0, 0)
qr_merged_vertically.compose!(qr_image, 0, logo.dimension.height)
qr_merged_vertically.save("qr_merged_vertically.png")
。
そうしないと、画像を相互に配置するために、より多くの外部情報または手動操作が必要になります。
参考文献:
これが役立つことができるかどうか確認してください。 http://stackoverflow.com/questions/29531726/ruby-rails-how-to-generate-qr-code-images-in-different-color – Sajin