#やりたいこと
railsからzBarを呼び出し、バーコード写真からJANコードを取得したい。
#できたこと(別途質問し、自己解決した部分)
http://qiita.com/kusuwada/items/9ba1ea4ccb64d1e18b79
を参考にzBarライブラリをmacにインストールし、ターミナルから呼び出し、JANコードを取得することができました。
######ターミナル画面
$zbarimg 466-tm.jpg
EAN-13:1920222007009
EAN-13:9784087204254
scanned 2 barcode symbols from 1 images in 0.01 seconds
(なお、使用したjpgは以下にあるものです)
http://www.moongift.jp/2010/03/ruby-barcodescanner/
#試した(が出来ない)こと
1.ruby barcode scannerを使用
http://www.moongift.jp/2010/03/ruby-barcodescanner/
で紹介されているものをインストール試みましたが、rake installのところで、以下ようなエラーで、恐らく古いコードでもう対応していないものと思い、とりあえず諦めてます。
ruby-barcodescanner $rake install --trace
rake aborted!
ERROR: 'rake/gempackagetask' is obsolete and no longer supported. Use 'rubygems/package_task' instead.
/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rake/gempackagetask.rb:3:in <top (required)>' /.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require'
/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' /Desktop/ruby-barcodescanner/Rakefile:6:in
<top (required)>'
/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/rake_module.rb:28:in load' /.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/rake_module.rb:28:in
load_rakefile'
/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:686:in raw_load_rakefile' /.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:96:in
block in load_rakefile'
/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:178:in standard_exception_handling' /.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:95:in
load_rakefile'
/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:79:in block in run' /.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:178:in
standard_exception_handling'
/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/lib/rake/application.rb:77:in run' /.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/rake-11.2.2/exe/rake:27:in
<top (required)>'
/.rbenv/versions/2.2.2/bin/rake:23:in load' /.rbenv/versions/2.2.2/bin/rake:23:in
<main>'
2. zBar gemを使用し、rubyから実行
https://github.com/willglynn/ruby-zbar
いくつかgoogleしてみるとこれはエラーを内包している(https://github.com/willglynn/ruby-zbar/issues/5)とのことですが、もしかしたら私の環境では大丈夫もしくはエラーは修正されているのかもと思いやってみました。
以下のようなコードのzbar_test.rbをjpgファイルのあるフォルダに置き、ターミナルから実行しました。
require 'zbar'
jpeg = File.binread('466-tm.jpg')
z = ZBar::Image.from_jpeg(jpeg)
r = z.process
puts "z is =#{z}" puts "r is =#{r}"
結果は以下のとおりです。
$ruby zbar_test.rb
z is =#ZBar::Image:0x007fa4ab9b9e50
r is =[#<ZBar::Symbol:0x007fa4ab9b9b58 @symbology="EAN-13", @data="1920222007009", @addon="", @quality=42, @location=[[31, 201], [138, 203], [31, 203], [138, 205], [145, 206], [138, 209], [145, 210], [138, 213], [30, 213], [138, 219], [138, 223], [144, 224], [138, 227], [144, 228], [138, 231], [137, 237], [138, 239], [144, 240], [138, 241], [138, 243], [144, 246], [137, 247], [29, 247], [137, 249], [144, 250], [29, 251], [137, 253], [137, 255], [29, 255], [137, 257], [28, 257], [137, 259], [137, 261], [137, 263], [137, 265], [137, 267], [29, 267], [137, 269], [258, 270], [137, 271], [257, 272], [137, 273]]>, #<ZBar::Symbol:0x007fa4ab9b9248 @symbology="EAN-13", @data="9784087204254", @addon="", @quality=22, @location=[[38, 51], [142, 57], [37, 57], [37, 59], [141, 61], [37, 61], [141, 63], [142, 67], [36, 73], [37, 75], [36, 83], [141, 87], [147, 88], [141, 89], [36, 95], [141, 97], [140, 99], [140, 101], [35, 101], [140, 103], [35, 111], [140, 115]]>]
3. zBar gemを使用し、railsから実行
コントローラーで以下のような記載とし、require 'zbar'でzbarライブラリを読み込もうとしました
---以下コントローラーのコード---
require 'zbar'
def new
@product = Product.new
z = Zbar::Image.from_jpeg(File.read('466-tm.jpg')).process
end
---以下Gemfileのコード---
gem 'zbar'
ところが、以下のとおり、requireが失敗してしまいました。
LoadError in ProductsController#index
cannot load such file -- zbar
#これから試そうと思っていること
#####rubyからターミナルコマンドを直接呼び出してJANコードを得る
system()等を使って恐らくできるとは思いますが、Heroku等にアップロードした際にエラーになりそうな気がしており、あまり気が進みません。。
#####他のバーコード写真でも試してみる。
バーコード1つのみのものとか。ただ、望み薄な気はしてます。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。