スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

画像に適切な拡張子を付けるAppleScript

◆画像ファイル専用◆

sipsを使ったAppleScriptその2。といっても、画像をいじったりはしないんですが。

仕事では大量に画像のファイル名を操作する事が割と多くて、この手のスクリプトは欠かせません。
で、sipsを使えば画像ファイルのフォーマットを判別出来るので、勝手に拡張子を付けてくれるスクリプトを書いてみました。
ただ、sipsはEPSファイルを扱う事が出来ないので、EPSを判別する部分だけ別に付け加えてます。

OS Xでは(■追記 これはOS XではなくPhotoshopCS2の仕様みたいです。CS3では改善されました)、ファイルを開く際にファイルタイプよりも拡張子が優先されて、 例えば実際のフォーマットは『EPS』なのに拡張子が『.jpg』だとエラーで開く事が出来ません。これは適切にファイルタイプが『EPSF』となっていても同様です。
なのでPhotoshopでJPEG画像を開いた時、『.jpg』の拡張子が付いた同名のEPSで上書き保存してしまうとダブルクリックで開かなくなってしまいます。
(Photoshopの『開く』メニューからでないと開けない)
あと、古くからMac使ってる人って拡張子を付けない習性があるように感じるんですが、そんな人たちから受け取った拡張子の付いて無い画像にも使えると思います。

ドロップレットとして保存したスクリプトに画像ファイルをドロップすると、元から拡張子が付いていれば適切な拡張子に変更、付いて無い場合は新たに拡張子を追加します。

一応、イジワルなファイル名でエラー処理のテストをしてますが、ファイル名の末尾にドットが並んでたりとか、変なファイル名には対応しきれないかも知れません。

Mac OS X 10.3.9で動作確認
property cr : (ASCII character 13)

on open drop
   set errList to {}
   tell application "Finder"
      activate
      repeat with theFile in drop
         set fName to name of theFile
         
         set newExt to my get_Extension(theFile) ----ファイルのフォーマットをチェックし、拡張子を得る
         
         if newExt is not "false" then
            ---- "." 以降4文字以内の末尾を拡張子として取得
            if fName contains "." and length of fName > 4 then
               set targetTxt to text -1 thru -4 of fName
            else
               set targetTxt to ""
            end if
            set currentExt to (do shell script "echo " & quoted form of targetTxt & " | sed 's/.*\.//'")
            if (count of character of currentExt) > 4 then
               set currentExt to ""
            end if
            ----既に拡張子が付いていた場合は現状の拡張子と置換
            if currentExt is not "" then
               do shell script "echo " & quoted form of fName & " | sed 's/" & quoted form of currentExt & "$/" & quoted form of newExt & "/'"
               set fName to result
            else
               ----拡張子が付いていなければ新たに付ける
               set fName to name of theFile & "." & newExt
            end if
            try
               set name of theFile to fName
            on error
               ----ファイル名変更時Finderでエラーが起きた場合エラーリストに追加
               set errList to errList & name of theFile
            end try
         end if
      end repeat
      
      if errList is not {} then
         beep
         set myResult to ""
         repeat with aElement in errList
            set myResult to myResult & aElement & cr
         end repeat
         display dialog "以下のファイルは拡張子を付けられませんでした。(ファイル名のダブり等)" & cr & cr & myResult
      end if
   end tell
end open


on get_Extension(theFile)
   set fPath to POSIX path of theFile as Unicode text
   try
      set newExt to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep format")
      if newExt is "tiff" then set newExt to "tif"
      if newExt is "jpeg" then set newExt to "jpg"
   on error
      ----sipsでフォーマットが判明しない場合、EPSかどうかをチェック
      open for access theFile without write permission
      set readText to read theFile to 20
      close access theFile
      if readText contains "EPSF" or readText contains "ナミモニ" then
         set newExt to "eps"
      else
         set newExt to "false"
      end if
   end try
   return newExt
end get_Extension
関連記事
スポンサーサイト

コメント

非公開コメント

Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。