読者です 読者をやめる 読者になる 読者になる

スキャンしたJPEGを縮小してzipで固めるGroovyスクリプト

dev groovy 自炊

念願のAndroid Tablet(ICONIA TAB A500)を入手し、本格的な自炊生活に突入しました。以前から裁断機とScanSnapは準備してあったのですが、やはりビューアーがあるとやる気が出ますね。

技術書などは検索可能PDFにするのでScanSnapの付属ソフトだけで後処理まで完了なのですが、漫画本は作業効率(ページ単位でのスキャンチェック)や汎用性を考慮してJPEGのzip圧縮で運用しています。

スキャンは300dpiで行っているので、そのままだとファイルサイズが1ページあたり500KBなので、200ページの本だと全体で100MB程度になります。これではちょっとサイズが大きすぎるので、Tabletで参照するための縮小バージョンを作成しています。

JPEGはすでに十分圧縮がかかっているので、単純にピクセル数を間引けばサイズが縮小できます。この作業を一括で行える汎用ツールを探したのですが、なかなか目的に見合ったものが見つかりません。探すのも疲れたのでGroovyで軽く自作してみました。

JPEGサイズ縮小スクリプト

指定されたディレクトリ以下の階層をたどって、すべてのJPEGファイルを変換します。
javax.imageio.ImageIOを使ってます。圧縮率は縦横1/2で固定(中途半端な倍率だとかえって画質が落ちるので)。
変換後のファイル名は、s+(変換元ファイル名)に決めうちです。ファイル名がsで始まるものは処理済とみなして無視します。

最適化など特に行っておらず、とりあえず「動く」レベルのものですが、私の環境(Core i7 2.8Gx4core)では1冊分の加工に約4分ほどです。動かして放置しておけばよいので、当面はこれで十分。

フォルダごとにzipで固めるスクリプト

指定されたディレクトリ直下にあるすべてのディレクトリを、ディレクトリ単位でzipにします。
AntBuilderを使えば簡単ですね。
zipファイル名は、(対象ディレクトリ).zipに決めうちです。

こういう小物はGroovyで作っておくと、他の環境(LinuxとかMacOSとか)でもそのまま使えるのでいいですね。

参考:愛用のTablet

3万円台後半で購入できます。Tegra2なので中身はXoomやRegza Tabletと大差ないです。お買い得。

acer【アイコニア】ICONIA タブレットPC シルバー ICONIA TAB A500-10S16

acer【アイコニア】ICONIA タブレットPC シルバー ICONIA TAB A500-10S16