2017-03-09 3 views
0

Ruby에서 QR 코드 생성에 rQrCode을 사용하고 있습니다. 그러나 배경색을 변경하거나 생성 된 QR 코드 중간에 이미지를 추가하고 싶습니다. 나는 약간의 조사를했지만 아무것도 발견하지 못했습니다.Ruby에서 로고 또는 배경색이있는 QR 코드 생성

아직 Ruby에서 구현 한 사람이 있습니까? 아니면 그것에 대해 알고 있습니까?

고마워요.

+0

이 유용 할 수 있는지 여부를 확인하시기 바랍니다. http://stackoverflow.com/questions/29531726/ruby-rails-how-to-generate-qr-code-images-in-different-color – Sajin

답변

5

나는 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 옵션을 사용하여 배경 색상을 변경할 수 있습니다 오 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") 

a QR code image (with a transparent background) overlaid a logo image

나는 큰 이미지를 구성하기 전에 어떤 결정하는 논리를 생략 한 내에서 알려진 작은 이미지를 중심 그렇지 않으면 당신은 가능성이 만남의 경계 부족 오류, 같은 그러나

~/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") 

logo and QR code position beside one another

또는 수직; 예 :각각 그 폭 또는 높이를 결합함으로써

logo and QR code images stack vertically

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") 

.

그렇지 않으면 이미지를 서로 배치하는 데 더 많은 외부 정보 또는 수동 조작이 필요합니다.

참고 :