スポンサーサイト

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

画像のクリッピングパスをもう一方の同じファイル名の画像にコピーするAppleScript

地味な実用系スクリプト。

時々、入稿されてきたRGB画像が数百点にのぼり、しかもその画像を結構な短納期でキリヌキと色調補正&CMYK変換をしなければならない事があって、そんな場合はキリヌキを(海外の協力会社などに)外注し、同時進行で色調補正の作業をするんですが、後で仕上がってきたキリヌキ画像のクリッピングパスを、手元で色調補正していた画像に反映させてやる必要が出てきます。その作業を自動化するためのAppleScriptです。

実は、たけうちとおるさんのサイトにそのまんまの機能のAppleScriptがあったんですが、自分の作業環境だと意図しない動作をするようだったので、少しチェックをきつめにするようにして書きました。

■使い方
あらかじめ『キリヌキ済み(クリッピングパスがある)画像』と『キリヌキ前の画像』のフォルダを作り、その中に(対になる様)画像を整理して入れておきます。(必ずしも数が合っている必要はありませんが、後でチェックする事になるので始めのうちに揃えておいた方が良いでしょう。)

スクリプトを実行し、『キリヌキ済み(コピー元)』と『キリヌキ前』のフォルダの場所を聞いて来るので、それぞれを選択してやるとPhotoshopでの処理が始まり、キリヌキ済み画像のクリッピングパスをキリヌキ前の同名の画像に適用して行きます。

下記の様な、正しく処理出来なかったファイルは『赤ラベル』が付いて確認作業がしやすいようになっています。
・双方のフォルダで一致するファイル名のものが無かった。
・コピー元の画像にクリッピングパスが無かった。
・コピー先の画像には既にクリッピングパスがあった。
・Photoshopで開けなかった。
・…etc.

■動作確認
MacOSX 10.5.8
Photoshop CS4
tell application "Adobe Photoshop CS4"
	set ru to ruler units of settings
	set ruler units of settings to cm units
end tell

tell application "Finder"
	set srcFold to (choose folder with prompt "クリッピングあり画像(コピー元)のフォルダを選択") as string
	set srcFold to srcFold as string
	set destFold to (choose folder with prompt "クリッピングなし画像(適用先)のフォルダを選択") as string
	repeat with theFile in list folder destFold without invisibles
		set theFile to (destFold & theFile) as alias
		if not class of ((properties of theFile) as record) is folder then my setLabel(theFile, 2)
	end repeat
	set destFold to destFold as string
	repeat with theFile in list folder srcFold without invisibles
		set srcFile to (srcFold & theFile) as alias
		if not class of ((properties of srcFile) as record) is folder then
			try
				set destFile to (destFold & theFile) as alias
				my mergePath(srcFile, destFile)
				
			on error
				--コピー先のファイルを開けない(存在しない)場合もコピー元に赤ラベルを付ける
				my setLabel(srcFile, 2)
			end try
		end if
	end repeat
end tell

tell application "Adobe Photoshop CS4"
	set ruler units of settings to ru
end tell

activate me
beep
if my chkLabel(srcFold) or my chkLabel(destFold) then
	display dialog "処理に問題のある画像があります。" & return & "双方のフォルダの『赤いラベル』のファイルをチェックして下さい。" with icon 0
else
	display dialog "終了しました。"
end if


on mergePath(srcFile, destFile)
	tell application "Adobe Photoshop CS4"
		activate
		open srcFile showing dialogs never
		set srcDoc to current document
		set pathItem to path items in srcDoc whose kind is clipping
		
		if (count pathItem) is 0 then
			my setLabel(srcFile, 2)
			close srcDoc
			return
		end if
		
		--クリッピングパスが存在せず下の行の処理に失敗すると以降の記述が実行されない場合がある?(エラーは出ず再現条件不明)
		set cp to entire path of path items in srcDoc whose kind is clipping
		close srcDoc
		my setLabel(srcFile, 4)
		
		open destFile showing dialogs never
		set destDoc to current document
		if (count (path items in destDoc whose kind is clipping)) is 0 then
			make new path item in destDoc with properties {entire path:cp, name:"Clipping", kind:clipping}
			my setLabel(destFile, 4)
			close destDoc saving yes
		else
			close destDoc
		end if
		
	end tell
end mergePath


on setLabel(theFile, col)
	tell application "Finder"
		set label index of theFile to col
	end tell
end setLabel


on chkLabel(theFolder)
	tell application "Finder"
		repeat with theFile in list folder theFolder without invisibles
			set theFile to (theFolder & theFile) as alias
			if label index of theFile is 2 then return true
		end repeat
		return false
	end tell
end chkLabel
関連記事
スポンサーサイト

コメント

非公開コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
Profile
choco
Author : choco

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

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

Categories
Favorites


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