質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2678閲覧

zBarをrubyから呼び出しjpgを読み込む

kazy1981

総合スコア44

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/08/12 04:30

#やりたいこと
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つのみのものとか。ただ、望み薄な気はしてます。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

完全に勘違いしておりました。。
まず2.のzBarのgemは正しくアウトプットされてるようですし、3.はZbarではなくZBarとしなければならないものでした。(逆に言えばその修正で動きますので、他の方のご参考になればと。。。)

投稿2016/08/13 14:17

kazy1981

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問