TweetFollow Us on Twitter

Performing Basic Image Manipulation...

Volume Number: 21 (2005)
Issue Number: 3
Column Tag: Programming

AppleScript Essentials

by Benjamin S. Waldie

Performing Basic Image Manipulation...

Using Your Existing Software!

This month, we're going to talk about performing some basic image manipulations with AppleScript. With the onset of the digital camera revolution comes a new set of problems for the computer user. The first thing many people realize after purchasing a digital camera is that film is essentially free, as is developing. You can take as many pictures as you like, just as long as you have ample hard drive space to store them.

While this concept seems amazing at first, you quickly realize that you now have thousands and thousands of image files to deal with. Those image files need to be downloaded, imported, renamed, filed, rotated, cropped, converted to other formats, and more! Sure, there are some tools that Apple gives us to help with these tasks, such as Image Capture and iPhoto. There are also a slew of other applications that you can download or purchase to aid with processing. However, wouldn't it be great if you could slap a few lines of code together to write your own application in order to help with your unique process? Well, using AppleScript, you can.

AppleScript is the perfect tool for automating many image-related tasks. As we have discussed in previous articles, AppleScript can be used to batch-rename files and folders. So, you could create a script that downloads your digital images into a custom folder structure and renames the images with the current date. You could create a script that opens up a folder of images in something like Photoshop and adds copyright information into the images' metadata. The possibilities are virtually limitless.

For this particular article, we're going to focus on performing some basic image manipulations, such as cropping, rotating, and resizing. We'll also look at ways you can convert your images to other formats, such as from JPEG to TIFF, and vice versa. Since AppleScript alone cannot manipulate images, you may be asking how will we do this? Using a background application named Image Events, which comes installed with Mac OS X, version 10.3 and higher, we can perform these tasks.

Image Events

Mac OS X, version 10.3 and higher comes with a background application called Image Events, which can be found in the System > Library > CoreServices folder on your hard drive.

    For those using Mac OS X, version 10.2, an application named Image Capture Scripting will allow you to perform a few of the same tasks that will be discussed in this article. Image Capture Scripting can be found in the System > Library > ScriptingAdditions folder on your hard drive.

The Image Events application can be used in conjunction with AppleScript to interact with a service in Mac OS X called SIPS, or Scriptable Image Processing Server. This service allows basic image manipulations, such as cropping and resizing to take place.

Accessing the Image Events Dictionary

In order to begin automating Image Events with AppleScript, the first thing you will want to do is open the Image Events AppleScript dictionary. This can be done by launching the Script Editor, and then selecting Image Events and clicking the Dictionary icon in the Library palette. If the Library palette is not visible, you can display it by selecting the Window > Library menu. You may also open the Image Events dictionary by selecting File > Open Dictionary... in the Script Editor.


Figure 1. The Image Events AppleScript Dictionary

Once the Image Events dictionary has been opened, you will notice several suites of classes and commands in the left-hand pane. Some of these can be ignored. For example, you won't need to use the Text Suite and you may not need to use the Disk-Folder-File Suite. You will need to access a few commands in the Standard Suite, such as open and quit. You will also want to access most of the classes and commands in the Image Suite, which contains all of the commands for actually performing image manipulations. The Image Events Suite contains some Image Events application properties, which you may want to modify, but I will not be covering them in this article.

Opening an Image

First, when working with Image Events, you need to make sure that the application is running. This is done with the launch command. For example:

tell application "Image Events"
   launch
end tell

Obviously, the next step in creating a script that will manipulate an image is to open an image. This is done by passing the image path to the open command. For example, the following sample code opens a JPEG image.

set theImage to choose file of type "JPEG"
tell application "Image Events"
   launch
   open theImage
end tell
--> image "imageName.jpg" of application "Image Events"

As you can see in the above example, the open command returns a reference to the opened image.

Accessing Properties of an Image

Once an image has been opened in Image Events, you may access certain properties of that image, such as the resolution, or the dimensions of the image. For example, the following sample code gets the resolution of a JPEG image.

set theImage to choose file of type "JPEG"
tell application "Image Events"
   launch
   set theImageReference to open theImage
   tell theImageReference
      resolution
   end tell
end tell
--> {180.0, 180.0}

This is just one example of an image property that can be retrieved with AppleScript. I encourage you to explore the other AppleScript-accessible image properties, which can be found under the image class in the Image Suite of the Image Events dictionary. One thing to note, though, is that all of these accessible properties are currently read/only properties. They cannot be changed with AppleScript.

Performing Image Manipulations

Image Events gives you the ability to perform a variety of basic image manipulations, including cropping, flipping, padding (i.e. adding a border around), rotating, and scaling. The commands for performing these, and other, image manipulations can be found under Image Suite in the Image Events dictionary. Let's take a look at one of these commands.

The example code below shows how to scale a JPEG image to a maximum height or width, based on the image's longest side. Please take note that in order to actually see the scaled image, you must save the image after it has been manipulated. This is done by using the save command. You may also want to close the image using the close command.

set theImage to choose file of type "JPEG"
tell application "Image Events"
   launch
   set theImageReference to open theImage
   tell theImageReference
      scale to size 100
      save
      close
   end tell
end tell

One thing to note is, by using the save command in the manner above, the image you opened will be overwritten with the newly scaled image. If you want to save the newly scaled image in another location, you may optionally specify a save path.

set theImage to choose file of type "JPEG"
set theOutputFolder to choose folder
tell application "Image Events"
   launch
   set theImageReference to open theImage
   tell theImageReference
      scale to size 100
      save in (theOutputFolder as string) & "Scaled Image.jpg"
      close
   end tell
end tell

Let's take a look at one more type of image manipulation. The following example code will flip an image horizontally, and save it into a separate folder.

set theImage to choose file of type "JPEG"
set theOutputFolder to choose folder
tell application "Image Events"
   launch
   set theImageReference to open theImage
   tell theImageReference
      flip with horizontal
      save in (theOutputFolder as string) & "Flipped Image.jpg"
      close
   end tell
end tell

Performing Image Conversions

When working with images, it frequently becomes necessary to convert images from one format to another. Sure, you could open a JPEG image in Preview, and manually export it to TIFF format. But, what if you needed to do this to 100 images, or 1000? This type of process can actually be done with AppleScript and Image Events.

Earlier, we discussed using the save command to save images once they have been manipulated. Well, the save command also some optional parameters, one of which allows you to specify a file type in which to save the image. The following example code demonstrates how to convert a file from JPEG to TIFF format.

set theImage to choose file of type "JPEG"
set theOutputFolder to choose folder
tell application "Image Events"
   launch
   set theImageReference to open theImage
   tell theImageReference
      save in (theOutputFolder as string) & "Converted Image.tiff" as TIFF
      close
   end tell
end tell

Image Events supports saving images in the following formats - BMP, JPEG, JPEG2, PICT, PNG, PSD, QuickTime Image. And TIFF. While Image Events can open GIF, MacPaint, PDF, SGI, and TGA images, it cannot save in these formats.

Pulling it Together

Now, let's pull together a few of the tasks we have discussed. The following example code uses a repeat loop to process a folder of JPEG images. Using Image Events, each image is opened, resized, and saved in TIFF format to an output folder.

set theImageFolder to choose folder with prompt "Select a folder of JPEG images:"
set theOutputFolder to choose folder with prompt "Select an output folder:"

tell application "Finder"
   set theImages to every file of theImageFolder whose file type = "JPEG"
end tell

tell application "Image Events"
   launch
   repeat with a from 1 to length of theImages
      set theImage to file ((item a of theImages) as string)
      set theImageReference to open theImage
      tell theImageReference
         set theImageName to name
         save in ((theOutputFolder as string) & theImageName & ".tiff") as TIFF
      end tell
   end repeat
end tell

Other Image Manipulation Tools

As you may already know, there are some other image manipulation tools available. Both Graphic Converter <http://www.lemkesoft.com/> and Adobe Photoshop <http://www.adobe.com/products/photoshop/> offer extensive AppleScript support. By using AppleScript to automate applications such as these, you can create simple to complex automated workflows in order to perform virtually any type of image manipulation or conversion process imaginable.

In Closing

Throughout this article, we have discussed some basic ways to go about manipulating images in Mac OS X using Image Events. While we looked at a few examples, as I mentioned earlier, there are many other image manipulation commands and image properties that are available within the Image Events dictionary, that we did not have a chance to cover. The examples in this article only scratch the surface, and are meant to show you some basic ideas of what is possible. I would encourage you to begin exploring the Image Events dictionary in greater detail, so that you can begin using this application to its full potential, making your own workflow more efficient.

For some additional information about Image Events, please visit Apple's AppleScript web site http://www.apple.com/applescript/imageevents/

Until next time, keep scripting!


Benjamin Waldie is president of Automated Workflows, LLC, a firm specializing in AppleScript and workflow automation consulting. In addition to his role as a consultant, Benjamin is an evangelist of AppleScript, and can frequently be seen presenting at Macintosh User Groups, Seybold Seminars, and MacWorld. For additional information about Benjamin, please visit http://www.automatedworkflows.com, or email Benjamin at applescriptguru@mac.com.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

OmniFocus 3.12 - GTD task manager with i...
OmniFocus is an organizer app. It uses projects to organize tasks naturally, and then add tags to organize across projects. Easily enter tasks when you’re on the go, and process them when you have... Read more
Maintenance 2.8.1 - System maintenance u...
Maintenance is a system maintenance and cleaning utility. It allows you to run miscellaneous tasks of system maintenance: Check the the structure of the disk Repair permissions Run periodic scripts... Read more
Scrivener 3.2.3 - Project management and...
Scrivener is a project management and writing tool for writers of all kinds that stays with you from that first unformed idea all the way through to the first - or even final - draft. Outline and... Read more
OmniPlan 4.3 - Professional-grade projec...
With OmniPlan, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success,... Read more
RetroArch 1.9.12 - Game emulator.
RetroArch is most popularly known for being a program with which you can play many emulators and games, which have all been customized and tailor-ported to the libretro API. It is designed to be fast... Read more
Affinity Photo 1.10.3 - Digital editing...
Affinity Photo - redefines the boundaries for professional photo editing software for the Mac. With a meticulous focus on workflow it offers sophisticated tools for enhancing, editing and retouching... Read more
Affinity Designer 1.10.3 - Vector graphi...
Affinity Designer is an incredibly accurate vector illustrator that feels fast and at home in the hands of creative professionals. It intuitively combines rock solid and crisp vector art with... Read more
BetterTouchTool 3.600 - Customize multi-...
BetterTouchTool adds many new, fully customizable gestures to the Magic Mouse, Multi-Touch MacBook trackpad, and Magic Trackpad. These gestures are customizable: Magic Mouse: Pinch in / out (zoom)... Read more
Backblaze 8.0.1.564 - Online backup serv...
Backblaze is an online backup service designed from the ground-up for the Mac. With unlimited storage available for $6 per month, as well as a free 15-day trial, peace of mind is within reach with... Read more
Day One 6.11 - Maintain a daily journal.
Day One is an easy, great-looking way to use a journal / diary / text-logging application. Day One is well designed and extremely focused to encourage you to write more through quick Menu Bar entry,... Read more

Latest Forum Discussions

See All

SwitchArcade Round-Up: Reviews Featuring...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for October 25th, 2021. In today’s article, we’ve got a small slice of news before we head into a pack of reviews. Lots of games in the Comfy Chair of Evaluation today, including The... | Read more »
Best iPhone Game Updates: ‘Horizon Chase...
Hello everyone, and welcome to the week! It’s time once again for our look back at the noteworthy updates of the last seven days. Some big names in this week’s round-up, with a general theme that I would characterize as nostalgic. Not every game... | Read more »
‘Fantasy Life Online’ from Level-5 Is Ge...
Back in 2018, Level-5 released Fantasy Life Online for iOS and Android in Japan. Fantasy Life Online is a follow-up to the amazing Nintendo 3DS game Fantasy Life. Fantasy Life is one of my favourite and most-played games on that platform, so I was... | Read more »
This Podcast Must Stay Above 55mph – The...
In this week’s episode of The TouchArcade Show, we have to keep the podcast above 55mph or else it will explode! Like the movie Speed! Eli and I spend just about the whole episode talking about Apple’s Unleashed event from this past Monday where,... | Read more »
TouchArcade Game of the Week: ‘Pinstripe...
I know what you’re thinking: “Boy that Townscaper thing sure is neat!" Yes, it is, I love it too and we loved it in our review. BUT! As tempting as it is to gush about it some more here, I actually want to draw your attention to another excellent... | Read more »
The 10 Best Horror Games on Nintendo Swi...
2021 has been a packed year for games on all platforms across different genres. If you’ve noticed, a lot of games are getting into the spooky season with in-game events and the like, but nothing beats a horror game during this season. For this... | Read more »
SwitchArcade Round-Up: ‘Dying Light’ Rev...
Hello gentle readers, and welcome to the SwitchArcade Round-Up for October 22nd, 2021. In today’s article, we have a rare Friday review from our pal Mikhail. He worked tirelessly through the night to bring us his thoughts on Dying Light: Platinum... | Read more »
Steam Link Spotlight - If On a Winter...
Steam Link Spotlight is a feature where we look at PC games that play exceptionally well using the Steam Link app. Our last entry looked at Ambition - A Minuet in Power. Read about how it plays using Steam Link over here. | Read more »
Adventure Puzzler ‘Rob Riches’ Gets a Ne...
Last month we wrote about a new game coming from developer Megapop called Rob Riches, a love letter to classic puzzle adventure games. In Rob Riches you’ll play as the titular man himself as you explore a temple collecting every coin you can find in... | Read more »
‘Grand Theft Auto: The Trilogy – The Def...
After Grand Theft Auto: The Trilogy – The Definitive Edition was officially announced recently following a rumour from a little while ago, a | Read more »

Price Scanner via MacPrices.net

Apple restocks Apple Watch SE 40mm GPS + Cell...
Apple has restocked Certified Refurbished Apple Watch SE models (40mm GPS + Cellular, Aluminum Case/Black Sport Band) in their online store for $50 off MSRP, only $279. Each Watch includes Apple’s... Read more
Apple continues to offer 13″ M1 MacBook Pros,...
Apple has a full line of 2020 13″ M1 MacBook Pros available Certified Refurbished, starting at only $1099 and up to $230 off original MSRP. These are the cheapest M1 MacBook Pros for sale today at... Read more
256GB 8.3″ iPad mini on sale for $599, take $...
Amazon has the new 8.3″ 256GB WiFi iPad mini on sale today for $599 including free shipping. Delivery is expect around November 9th. Amazon’s price is $50 off Apple’s MSRP, and it’s the lowest price... Read more
A Look Back At ‘The gadget of the century,’ A...
FEATURE: 10.23.21 – It’s been two decades since a device that put 1,000 songs in our pockets would forever change the way we listened to music. The iPod — which Apple announced on October 23, 2001 —... Read more
Get Apple’s new AirPods Pro with MagSafe Case...
Amazon has Apple’s new 2021 AirPods Pro with MagSafe Case in stock and on sale for $219 shipped. Their price is $30 off Apple’s MSRP, and it’s the first discount we’ve seen on 2021 AirPods Pro. For... Read more
First discounts appear at Amazon with new 14″...
Amazon is offering $50 discounts on a couple of new 14″ M1 MacBook Pros and 16″ M1 MacBook Pros. Preorder today, and Amazon will ship once they receive stock. We expect Amazon’s $50 discount to... Read more
Expercom has the new 9th generation 10″ iPad...
Apple reseller Expercom has Apple’s new 2021 9th generation iPad and 8.3″ iPad mini on sale for up to $40 off MSRP. They are the first reseller to offer such discounts. Due to supply constraints,... Read more
Save $250 on the 12″ 2TB M1 iPad Pro, only $1...
Amazon has the new 12″ 2TB WiFi M1-powered iPad Pro, Space Gray, in stock and on sale today for $1949 shipped. Their price is $250 off Apple’s MSRP, and it’s the lowest price available for a 2TB iPad... Read more
These are the best AppleCare+ Plan deals toda...
Apple reseller Expercom is offering sale prices on Apple AppleCare+ plans ranging up to $94 off MSRP, depending on the product. Plans can be purchased individually and will extend your technical and... Read more
So… When Will All The NEW Products Apple Anno...
FEATURE: 10.20.21 – By now, you’ve probably heard everything there is to know about the products that were unveiled at Apple’s second Fall product announcement of the year, but when will they finally... Read more

Jobs Board

Sales Floor Associate - *Apple* Blossom Mal...
Sales Floor Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Seasonal Operations Associate - *Apple* Blo...
Seasonal Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Read more
Seasonal Cashier - *Apple* Blossom Mall - J...
Seasonal Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Geek Squad Advanced Repair *Apple* Professi...
**838870BR** **Job Title:** Geek Squad Advanced Repair Apple Professional **Job Category:** Store Associates **Store Number or Department:** 000056-Cedar Hill-Store Read more
Sales Floor Assistant - *Apple* Blossom Mal...
Sales Floor Assistant - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.