指定フォルダ以下のPICTファイルをGraphicConverterでJPEGに変換
指定フォルダ以下のすべてのPICTファイルをGraphicConverter(v6.7.3)でJPEGファイルに変換するAppleScriptです。
今をさかのぼること10数年前に発売された、初の商用デジタルカメラ「QuickTake 100」で撮りためた写真を128MBのMO十数枚に保存してありました。

▲1995/2/7の写真。SPARCstation IPXが写っている

▲Macintosh IIcxが写っている。古い……
Preview.appの64ビット起動モード([6][4]を押しながら起動……ではなく、Mac OS X 10.6の32ビット起動&通常アプリ起動)ではQuickTakeのネイティブ記録フォーマットであるPICT(QuickTake PICT)をオープンできなくなっていました。

そこで、MOドライブが動くうちに読み取って、JPEGにフォーマット変換しておこうと思い立ち、Graphic ConverterでPICTをオープンできることを確認しました。

Graphic Converterは昔からAppleScriptに対応していたのですが、あまりASからコントロールする機会はありませんでした。ひととおり最低限の処理を記述して、1フォルダ分のデータで処理テストを実施。Classic Mac OSのデータをMac OS Xにコピーしてそのまま処理したので、一部で不可解な挙動(file typeを取得する際にエラーが出るとか)がありましたが、とくに問題なくデータ変換できました。
ファイルの作成日が引き継がれないのでは? と心配していましたが、修正日が変更されるだけでとくに変わることはなかったので、あらかじめ作っておいた作成日変更のScriptは使わずじまいに。
Graphic ConverterのScriptingを行って不思議だったのは、画像に対してDocumentオブジェクトでアクセスできずに、Windowオブジェクトを通じてアクセスする必要があること。複数枚の画像をオープンして相互にデータのやりとりを行うような場合には、ちょっと辛い(どうやってWindow同士の区別を行うのか???)感じがします。
あとは、Grachic Converterのプロセスを非表示にして処理を行ったものの、ファイルオープンのアニメーションだけは表示されてしまい、そのあたりは少々不満を覚えたぐらいでしょうか。
| スクリプト名:指定フォルダ以下のPICTファイルをJPEGに変換 |
| set aFol to choose folder set fList to {} set f_r to a reference to fList –外付けHDDをSpotlightの処理対象外に指定していたので、mdfindコマンドを使わなかった tell application “Finder” set fList to entire contents of aFol as alias list end tell –Graphic Converterを非表示状態に tell application “System Events” tell process “GraphicConverter” set visible to false end tell end tell –メインループ repeat with i in f_r set j to contents of i try set aInfo to info for j set aF to folder of aInfo on error set aF to false end try if aF = false then try –古いMac OSのファイルにアクセスしたときに、問題が発生することがあったために対処した with timeout of 10 seconds tell application “Finder” set aType to file type of j end tell end timeout if aType = “PICT” then convToJPEG(j) of me end if end try end if end repeat –指定のファイルをGCでオープンしてJPEGでSave on convToJPEG(aFile) tell application “GraphicConverter” –オープン中のドキュメントをすべてクローズ try close every window saving no –GCにはDocumentというオブジェクトは定義されていない。すべてwindowで操作 end try silentopen aFile –openコマンドだとエラーやダイアログ表示を行うが、silentopenコマンドだとメッセージが出ないらしい。ただし、非表示オープンモードではない set saveRes to (save window 1 in aFile as JPEG without makeCopy and wwwready) –> 保存成功の場合には0が返る –オープン中のドキュメントをすべてクローズ try close every window saving no end try end tell –保存したファイルにJPEGの拡張子を付ける if saveRes = 0 then tell application “Finder” set aName to name of aFile set aName to aName & “.jpg” set name of aFile to aName end tell end if end convToJPEG |
