スポンサーサイト

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

カラープロファイル毎に画像ファイルを分別するスクリプト

AppleScriptのImage Events(とかsipsコマンド)で何か出来ないかと色々考えてたんですが、画像をいじるのはPhotoshopのアクションで事足りてるし、そうなると後は画像の情報を得て何か処理をするくらいかなーーとか考えつつ色々と試してます。

で、手始めに画像ファイルに含まれてるカラープロファイル毎に、ファイルを分別するスクリプトを作ってみました。

ドロップレットとして保存したスクリプトに画像ファイルをドラッグすれば、同じプロファイルを持つ画像が一つのフォルダにまとまります。

素性の分からないJPEG画象とかをまとめて受け取った時なんかに使えるかも知れませんが、自分でも利用価値があるのかどうかよく分かりません。

プロファイル名を得るのはImage Eventsよりsipsコマンドの方がシンプルに出来そうだったので、do shell scriptでsips使う様にしました。
sipsで処理出来ないファイル(EPSや画像でないファイル)や、プロファイル名を得られないフォーマット(PSD等)、プロファイルが埋め込まれてない画像は何も処理をしないようになってます。

Mac OS X 10.3.9で動作確認

on open drop
   repeat with theFile in drop
      set myResults to my get_ImageProps(theFile)
      
      --プロファイル名を得られないファイルは処理対象としない(falseにする)
      set color_space to 1st item of myResults
      
      set file_format to 2nd item of myResults
      set profile_name to 3rd item of myResults
      
      if color_space is not "false" then
         tell application "Finder"
            set fName to name of theFile as string
            set newFolderName to profile_name & "@" & color_space & "-" & file_format
            set currentDir to parent of theFile as Unicode text
            if not (folder newFolderName of folder currentDir exists) then
               make new folder with properties {name:newFolderName} at currentDir
            end if
            move theFile to folder newFolderName of folder currentDir
         end tell
      end if
   end repeat
end open


on get_ImageProps(theFile)
   set profile_name to ""
   set file_format to ""
   try
      set fPath to POSIX path of theFile as Unicode text
      set color_space to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep space")
      set file_format to 2nd word of (do shell script "sips -g all " & quoted form of fPath & " | grep format")
      set profile_name to (do shell script "sips -g all " & quoted form of fPath & " | grep profile | sed 's/profile: //'")
      
      ---なぜか頭に何らかのスペース(?)が入るので除去
      set profile_name to (items 3 thru -1) of profile_name as Unicode text 

      if profile_name is "" then set color_space to "false"
   on error
      set color_space to "false"
   end try
   return {color_space, file_format, profile_name}
end get_ImageProps
関連記事
スポンサーサイト

コメント

非公開コメント

Profile
choco
Author : choco

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

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

Categories
Favorites


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