先のエントリで紹介した、私自作の怪しげなアプリの解説です。実際に作業する分には理解する必要がありませんので、興味のある方だけご覧下さい。また、Windowsユーザの方はこれを見て別のやり方があるかどうか考えてみてください。
このアプリでは、以下の作業を自動的に行なっています。
-----
1.300dpiで取り込んだPDFファイルを、264dpiのJPGイメージにレンダリングする。
2.画像の長い方のサイズを、(小)では1536、(大)では2048ポイントに縮小する。
3.画像のサイズを、(小)1536x1014、(大)2048x1536にトリミング(切り抜き)する。
4.JPGファイルを生成したため、1ページ1ファイルとなっている。これのファイル名を、連番にする。
5.JPGファイルをZIPパックする。
-----
驚くべきことに、Mac OS ではこれらの作業を自動化するためのアプリが最初から付いてきます。Automaterというのがそれで、画像のサイズを変える、ファイル名を取得する、保存する、などの操作を一つずつ繋げていくだけで、お好きな自動化処理が作れてしまう。コイツは本当に便利だ。シンプルながらコンピュータ遊びの醍醐味を味わえます。
さて、一つずつ解説しましょう。
1.300dpi -> 264dpiの変換
PDFファイルをJPGにした方がCloudReadersでは高速に読み取れることは前回のエントリで書いた通りです。ではなぜ中途半端な264dpiにするのか。iPadのディスプレイモニタは、132dpiとなっています。全画面表示をしたときにちょうどすっきりと表示され、しかも拡大表示もできる、という事を考えたときに、132の倍数とするのが一番都合が良いと考えました。
300dpiのままで132dpiのiPadディスプレイに表示させた場合、内部的にダウンサンプルを行う必要が生じます。もともとあったドットのギザギザを、別のスケールに当てはめる作業が必要になるのですが、このときにギザギザの段がずれると、その分を再加工する必要が出てきます。これが、画像がぼやける原因になるのではと考えました。
132の倍数としていれば、ギザギザ段がずれることなく、縮小表示としてもちょうどうまくハマるんじゃないか、というのが私のアイデアです。
実際にいろいろな画像サンプルを作って表示させました(グレーの網掛けとか)。その結果、132倍数が一番しっくりくるような気がしたため、こいつを採用したと言うわけです。
とは言え、最初に300->264の変換をやっているので、ある程度はエッジが破壊されておりまして、まあ、気休めと言ってしまえばそれまでなんですけど、せっかく自動化処理するならできることはやっておきたいというのがありまして。
2.および3.サイズ調整
これは、iPadの画面にちょうど収まるように画像を縮小する作業です。(大)の方は、1024x768の丁度倍のサイズとしてあり、全画面表示でぴったり、ダブルタップによる原寸表示では2倍拡大、となるようにしました。
(小)の方は見開き2ページが丁度収まるようなサイズにしてあります。サイズとしては単純に(大)の半分で良いか、というとそうではなく、見開きの中央に20pの隙間が生じるため、この文を差し引いたサイズとしました。iPadを横にして2ページの見開き、文庫本に近いサイズでできるだけすっきりと見られるようにしました。もちろん、ダブルタップによる原寸表示では、2倍拡大となるようになっています。
4.ファイル名に連番を付ける
生成したJPGファイルに連番を付けます。Automaterの標準機能で簡単に作れます。
5.JPGファイルをZIPパックする
これも同様。
-----
ちょっと余談なのですけど、このスクリプト(Automater実行プログラムのソース)を書く際に一番苦労したのが、実はファイル名を取得すること。信じられないくらい手軽に自動化処理プログラムを作ることのできるAutomaterなのですが、信じられないくらいファイル名を取得するのが厄介なんですよ。パスを取ることは一発でできるんですけど、ファイル名だけが欲しいとなると、ひと手間もふた手間もかかります。今回のスクリプトも、最初にパスを取っておいてそこからファイル名を吸い上げ、最後にZIPパックを作るときに、そのファイル名でリネームするという、結構面倒なことをやっています。なんで簡単にファイル名が取れないのか、なぞです。
結局、こちらを参考にして解決しました。ファイル名を生成する部分だけ、Applescriptを走らせています。
ファイルのMac OS形式のフルパスのテキストから、ファイル名のみを取得(AS Hole(AppleScriptの穴) By Piyomaru Software)
最後に、これは、まあ、言い訳なのですけど、簡単に作ったスクリプトなので、動作に不備があっても文句を言わないで下さいね・・・。実行プログラムはただのスクリプトなので、Automaterで開くと中身を見ることができます。みなさんのお好みでお好きにいじくりまわしてください。
Nobu
このアプリでは、以下の作業を自動的に行なっています。
-----
1.300dpiで取り込んだPDFファイルを、264dpiのJPGイメージにレンダリングする。
2.画像の長い方のサイズを、(小)では1536、(大)では2048ポイントに縮小する。
3.画像のサイズを、(小)1536x1014、(大)2048x1536にトリミング(切り抜き)する。
4.JPGファイルを生成したため、1ページ1ファイルとなっている。これのファイル名を、連番にする。
5.JPGファイルをZIPパックする。
-----
驚くべきことに、Mac OS ではこれらの作業を自動化するためのアプリが最初から付いてきます。Automaterというのがそれで、画像のサイズを変える、ファイル名を取得する、保存する、などの操作を一つずつ繋げていくだけで、お好きな自動化処理が作れてしまう。コイツは本当に便利だ。シンプルながらコンピュータ遊びの醍醐味を味わえます。
さて、一つずつ解説しましょう。
1.300dpi -> 264dpiの変換
PDFファイルをJPGにした方がCloudReadersでは高速に読み取れることは前回のエントリで書いた通りです。ではなぜ中途半端な264dpiにするのか。iPadのディスプレイモニタは、132dpiとなっています。全画面表示をしたときにちょうどすっきりと表示され、しかも拡大表示もできる、という事を考えたときに、132の倍数とするのが一番都合が良いと考えました。
300dpiのままで132dpiのiPadディスプレイに表示させた場合、内部的にダウンサンプルを行う必要が生じます。もともとあったドットのギザギザを、別のスケールに当てはめる作業が必要になるのですが、このときにギザギザの段がずれると、その分を再加工する必要が出てきます。これが、画像がぼやける原因になるのではと考えました。
132の倍数としていれば、ギザギザ段がずれることなく、縮小表示としてもちょうどうまくハマるんじゃないか、というのが私のアイデアです。
実際にいろいろな画像サンプルを作って表示させました(グレーの網掛けとか)。その結果、132倍数が一番しっくりくるような気がしたため、こいつを採用したと言うわけです。
とは言え、最初に300->264の変換をやっているので、ある程度はエッジが破壊されておりまして、まあ、気休めと言ってしまえばそれまでなんですけど、せっかく自動化処理するならできることはやっておきたいというのがありまして。
2.および3.サイズ調整
これは、iPadの画面にちょうど収まるように画像を縮小する作業です。(大)の方は、1024x768の丁度倍のサイズとしてあり、全画面表示でぴったり、ダブルタップによる原寸表示では2倍拡大、となるようにしました。
(小)の方は見開き2ページが丁度収まるようなサイズにしてあります。サイズとしては単純に(大)の半分で良いか、というとそうではなく、見開きの中央に20pの隙間が生じるため、この文を差し引いたサイズとしました。iPadを横にして2ページの見開き、文庫本に近いサイズでできるだけすっきりと見られるようにしました。もちろん、ダブルタップによる原寸表示では、2倍拡大となるようになっています。
4.ファイル名に連番を付ける
生成したJPGファイルに連番を付けます。Automaterの標準機能で簡単に作れます。
5.JPGファイルをZIPパックする
これも同様。
-----
ちょっと余談なのですけど、このスクリプト(Automater実行プログラムのソース)を書く際に一番苦労したのが、実はファイル名を取得すること。信じられないくらい手軽に自動化処理プログラムを作ることのできるAutomaterなのですが、信じられないくらいファイル名を取得するのが厄介なんですよ。パスを取ることは一発でできるんですけど、ファイル名だけが欲しいとなると、ひと手間もふた手間もかかります。今回のスクリプトも、最初にパスを取っておいてそこからファイル名を吸い上げ、最後にZIPパックを作るときに、そのファイル名でリネームするという、結構面倒なことをやっています。なんで簡単にファイル名が取れないのか、なぞです。
結局、こちらを参考にして解決しました。ファイル名を生成する部分だけ、Applescriptを走らせています。
ファイルのMac OS形式のフルパスのテキストから、ファイル名のみを取得(AS Hole(AppleScriptの穴) By Piyomaru Software)
最後に、これは、まあ、言い訳なのですけど、簡単に作ったスクリプトなので、動作に不備があっても文句を言わないで下さいね・・・。実行プログラムはただのスクリプトなので、Automaterで開くと中身を見ることができます。みなさんのお好みでお好きにいじくりまわしてください。
Nobu