[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1553) [AS_Photoshop CS2]resize_image



もともとPhotoshop 7用のものだけど、CS2でもすんなり動いた。

(*
ドラッグ&ドロップされた画像をリサイズ(リラスタライズ)する。
このとき、縦・横どちらかの長辺のピクセル数を指定する。かならず画像のバックアップをしてから実行させてください。
--
(c) 2002-2007 市川せうぞー www.seuzo.jp
2007.06.16	Adobe Photoshop CS2用
*)

property my_pix : 1000 --ピクセル数の初期値

on run --ダブルクリックで起動したときに初期値を変えられるように
	try
		display dialog "最大ピクセル数を入力してください" default answer my_pix
		set my_pix to (text returned of result) as number
	on error
		display dialog "入力に不正があります。もう一度設定してください"
	end try
end run

on open dolopitem
	tell application "Finder"
		activate
		display dialog "このスクリプトを実行すると、画像に対して処理をして保存をします。やり直しはできません。
かならず画像のバックアップをしてから実行させてください。"
		repeat with afile in dolopitem
			if (creator type of afile) = "8BIM" then --Photoshopドキュメントだけを対象にしています。でないと、PDFやらイラレEPSも容赦なくOpenしますので(笑)
				my resize_image(afile)
			end if
		end repeat
	end tell
end open


to resize_image(afile)
	tell application "Adobe Photoshop CS2"
		try --画像ファイルでないものが、紛れ込む可能性
			open afile showing dialogs never --警告ダイアログなどを無視して開く
		on error
			return
		end try
		tell current document
			
			set my_h to (height as pixels) as number
			set my_w to (width as pixels) as number
			if my_h > my_pix or my_w > my_pix then
				set my_scale to my_pix / my_h
				if my_w > my_h then
					set my_scale to my_pix / my_w
				end if
				resize image width (my_w * my_scale) as pixels ¬
					height (my_h * my_scale) as pixels
				close saving yes --保存して閉じる
			else --
				close saving no --保存しないで閉じる
			end if
			
		end tell
	end tell
end resize_image