Archive for the 'GraphicConverter' Category

2010/07/25 指定フォルダ以下のPICTファイルをGraphicConverterでJPEGに変換

指定フォルダ以下のすべてのPICTファイルをGraphicConverter(v6.7.3)でJPEGファイルに変換するAppleScriptです。

今をさかのぼること10数年前に発売された、初の商用デジタルカメラ「QuickTake 100」で撮りためた写真を128MBのMO十数枚に保存してありました。

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

iicx.jpg
▲Macintosh IIcxが写っている。古い……

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

pr1.jpg

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

gc1.jpg

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

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に