memorandums

日々のメモです。

スキャンした画像ファイルのファイル名を固定する方法

タイトルだけではよくわからないですね。。。

明日から開催のイベントに向けて、ゲームを少しだけ改造していました。

改造のポイントはステージ?を自分で描いて作れるようにする、ということです。

来場者に紙を配り、そこにペンで以下のような感じで書き込んでもらいます。

f:id:ke_takahashi:20171110085925j:plain

すると、以下のような感じでステージ上に障害物が現れる。。。という感じです。

f:id:ke_takahashi:20171110090052j:plain

元ネタのスプラトゥーンでは様々なステージが用意されていますので、それを少しでも似たような感じで、かつ、面白くできないかな。。。というトライです。

ここ1週間の空き時間で作ってきまして、昨日、やっと動作して学生さん達にデモプレイしてもらったところでした。

で、現場では記入してもらった紙をスキャンする必要があるのですが、研究室にあるScanSnapは意外と重量があり、徒歩で搬入する予定のためできるだけ重量を軽くしたいと昨晩気づきました。。。

スマホアプリを試しましたが照明条件によっては明るさがかわり(濃淡が変わると2値化する閾値が変わりメンドー)、いろいろ思案した結果、軽量なイメージスキャナを購入することにしました。業者発注している時間がないので、個人買いです。

探すとヨドバシカメラに在庫がありました。

A4モバイルスキャナー DS-30|製品情報|エプソン

軽量なら他でも使えるかもしれないので。。。ということでポチり、帰宅経路にあるヨドバシカメラによって受け取りました。

で、夕食後、Macに接続してみると。。。想定した動作をしない。。。

以前、来場者に描いてもらい立体化する作品を作ったことがあり、そのときにはscanliineとsipsというコマンドを利用していました。

scanline – Command-line Document Scanning for Mac OS X – Klepopotamus

いろいろと状況を変えてテストしましたがダメ。。。深夜1時くらいになり、諦めました。

結局、付属CDについていたEPSONのスキャンアプリでスキャンすることにしました(EPSONのサイトで最新のアプリをダウンロードしていれたものの動作しなかった。。。PDFは読めるけどJPEGは途中でアウト、テストしてないんじゃないかな?)

f:id:ke_takahashi:20171110091024p:plain

ここからやっと本題。。。

このスキャンアプリはPDFはもちろんJPEGの生成などもできます。おかしな動作は全くありません。信頼性が高い。

ただ。。。スキャンした画像ファイルのファイル名を固定化することができません。私はスキャンしたら例えば、a.jpgのファイル名で指定したフォルダに保存して上書きし続けて欲しい。。。という特殊な使い方になります。これができない。。。

で、解決策として、あまりかっこよくありませんが、定期的にフォルダを監視して、スキャンアプリが生成する連番ファイル名っぽいのを見つけたら、固定的なファイル名に置き換えるというスクリプトをバックグラウンドで動かすことにした、ということです。

スクリプトはいたって簡単。rubyはこういうときに楽ですね。。。

while true
  Dir.glob("a_*jpg") {|f|
    puts f + " replaced"
    File.delete("a.jpg")
    File.rename(f, "a.jpg")
  }
  sleep 3
end

まだ、やらなければならないことがありますが。。。明日を無事迎えられたら。。。と思います。