-- save in Script Editor as an Application, then
-- drag image files onto the Application's icon
on open some_items
repeat with this_item in some_items
try
rescale_and_save(this_item)
end try
end repeat
end open
to rescale_and_save(this_item)
tell application "Image Events"
launch
set the target_width to 120
-- open the image file
set this_image to open this_item
set typ to file type of this_image
copy dimensions of this_image to {current_width, current_height}
if current_width is greater than current_height then
scale this_image to size target_width
else
-- figure out new height
-- y2 = (y1 * x2) / x1
set the new_height to (current_height * target_width) / current_width
scale this_image to size new_height
end if
tell application "Finder" to set new_item to (container of this_item as string) & "scaled." & (name of this_item)
save this_image in new_item as typ
end tell
end rescale_and_save
property openTypes : {"PDF", "com.adobe.pdf", "BMP", "com.microsoft.bmp", "JPEG", "JPEG2", "jpg", "public.jpeg", ¬
"PICT", "com.apple.pict", "PNG", "public.png", "PSD", "com.adobe.photoshop-image", "TIFF", "public.tiff"}
--Get the artwork file
set theFiles to choose file with prompt "Choose art file(s)" of type openTypes with multiple selections allowed without invisibles
runConversion(theFiles)
on open someFiles
runConversion(someFiles)
end open
on runConversion(theItems)
set saveFolder to choose folder with prompt "Save resized pictures where?" without multiple selections allowed and invisibles
tell application "Image Events"
launch
set newHeight to 600
set newWidth to 0
if (count items of theItems) is greater than 0 then
repeat with anItem in theItems
set imageFile to (open anItem)
set theSize to dimensions of imageFile
set width to item 1 of theSize
set height to item 2 of theSize
set ratio to (width / height)
set newWidth to (ratio * newHeight) as integer
if newHeight > newWidth then
scale imageFile to size newHeight
else
scale imageFile to size newWidth
end if
save imageFile as JPEG in saveFolder
close imageFile
end repeat
else
display dialog "Nothing to convert."
end if
end tell
end runConversion
global theImage
-- Prompt the user to select a file
set theImage to choose file with prompt "Please select an image file:" without invisibles
-- Prompt the user to enter the width of the picture
set theResult to display dialog "Saisissez la largeur de l'image." default answer "640"
set theAnswer to text returned of theResult
-- Retrieve the resize percentage amount
set theNewWidth to theAnswer as integer
-- Determine a path in which to save the resized image
tell application "Finder"
set theImageName to name of theImage
set theImageFolder to (folder of theImage) as string
end tell
set theResizedImagePath to theImageFolder & "Resized-" & theImageName as string
-- Open the image, resize it, and save it as a new file
tell application "Image Events"
launch
set theImage to open theImage
-- This is the tricky part: you need to keep the ratio of the original picture
copy dimensions of theImage to {currentWidth, currentHeight}
set ratio to theNewWidth / currentWidth
tell theImage
scale by factor ratio to size theNewWidth
save in theResizedImagePath
close
end tell
end tell
set this_file to choose file
try
tell application "Image Events"
launch
set this_image to open this_file
scale this_image to size 318
rotate this_image to angle 45
pad this_image to dimensions {800, 600}
save this_image with icon
close this_image
end tell
on error error_message
display dialog error_message
end try