我使用rQrCode在Ruby中生成QR碼。但是我想更改背景顏色或在生成的QR碼中間添加圖像。我做了一些研究,但什麼都沒發現。在Ruby中使用徽標或具有背景顏色生成QR碼
有沒有人在Ruby中實現它?或者你有什麼想法嗎?
非常感謝。
我使用rQrCode在Ruby中生成QR碼。但是我想更改背景顏色或在生成的QR碼中間添加圖像。我做了一些研究,但什麼都沒發現。在Ruby中使用徽標或具有背景顏色生成QR碼
有沒有人在Ruby中實現它?或者你有什麼想法嗎?
非常感謝。
我使用rQrCode在Ruby中生成QR碼。但我想改變背景顏色[...]
回顧rQrCode documentation您創建QR碼爲無論是圖片,ANSI,SVG或在使用以下: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")
你也可以改變背景顏色,使用fill
選項,而不是
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")
這些可以一起使用Ø只有它,它取決於你。
但是,我會警告您,根據所使用顏色的對比度,您的或其他人的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)
_你可以忽略module_px_size: 4
的選擇,這是我下面example._有用
然後加載您的徽標作爲一個單獨的圖像,並組成一個合理的寬度&高度偏移的新形象;我中心放大圖像
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