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

GarageSale 7.0.7 - Create outstanding eB...
GarageSale is a slick, full-featured client application for the eBay online auction system. Create and manage your auctions with ease. With GarageSale, you can create, edit, track, and manage... Read more
SpamSieve 2.9.28 - Robust spam filter fo...
SpamSieve is a robust spam filter for major email clients that uses powerful Bayesian spam filtering. SpamSieve understands what your spam looks like in order to block it all, but also learns what... Read more
Thunderbird 45.7.1 - Email client from M...
As of July 2012, Thunderbird has transitioned to a new governance model, with new features being developed by the broader free software and open source community, and security fixes and improvements... Read more
Opera 43.0.2442.991 - High-performance W...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
OnyX 3.2.4 - Maintenance and optimizatio...
OnyX is a multifunction utility that you can use to verify the startup disk and the structure of its system files, to run miscellaneous maintenance and cleaning tasks, to configure parameters in the... Read more
VueScan 9.5.71 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
Slack 2.5.1 - Collaborative communicatio...
Slack is a collaborative communication app that simplifies real-time messaging, archiving, and search for modern working teams. Version 2.5.1: New The way we load teams you don't view often has been... Read more
HandBrake 1.0.3 - Versatile video encode...
HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs. Features Supported Sources VIDEO_TS folder, DVD image or real DVD (unencrypted... Read more
Vivaldi 1.7.735.46 - An advanced browser...
Vivaldi is a browser for our friends. In 1994, two programmers started working on a web browser. Our idea was to make a really fast browser, capable of running on limited hardware, keeping in mind... Read more
Vivaldi 1.7.735.46 - An advanced browser...
Vivaldi is a browser for our friends. In 1994, two programmers started working on a web browser. Our idea was to make a really fast browser, capable of running on limited hardware, keeping in mind... Read more

Last week on Pocket Gamer
If you’re wondering what’s going on in the wider world of portable gaming, our sister site PocketGamer has you covered. Each week we like to check in on the PG team and see what they’ve been preoccupied with. From the latest on the Nintendo Switch... | Read more »
Mudd Masher arrives this week
Atooi Games, the minds behind Totes the Goat and Mutant Mudds, have a new game in the works -- Mudd Masher. The game, a hybrid of the independent studio's first two titles, is expected to launch this week on March 2. [Read more] | Read more »
The best sales on the App Store this wee...
The App Store has quite an exciting lineup of discount games this week that range across a variety of genres. It's a great opportunity to catch up on some of the premium games you may have been holding off on -- and some you can even grab for free... | Read more »
The best new games we played this week
Ah, here we are again at the close of another busy week. Don't rest too easy, though. We had a lot of great new releases in mobile games this week, and now you're going to have to spend all weekend playing them. That shouldn't be too much of a... | Read more »
Rollercoaster Tycoon Touch Guide: How to...
| Read more »
Rabbids Crazy Rush Guide: How to unlock...
The Rabbids are back in a new endless running adventure, Rabbids Crazy Rush. It's more ridiculous cartoon craziness as you help the little furballs gather enough fuel (soda) to get to the moon. Sure, it's a silly idea, but everyone has dreams --... | Read more »
Tavern Guardians (Games)
Tavern Guardians 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Tavern Guardians is a Hack-and-Slash action game played in the style of a match-three. You can experience high pace action... | Read more »
Slay your way to glory in idle RPG Endle...
It’s a golden age for idle games on the mobile market, and those addictive little clickers have a new best friend. South Korean developer Ekkorr released Endless Frontier last year, and players have been idling away the hours in the company of its... | Read more »
Tiny Striker: World Football Guide - How...
| Read more »
Good news everyone! Futurama: Worlds of...
Futurama is finding a new home on mobile in TinyCo and Fox Interactive's new game, Futurama: Worlds of Tomorrow. They're really doing it up, bringing on board Futurama creator Matt Groening along with the original cast and writers. TinyCo wants... | Read more »

Price Scanner via MacPrices.net

13-inch 2.7GHz Retina MacBook Pro on sale for...
B&H Photo has the 2015 13″ 2.7GHz/128GB Retina Apple MacBook Pro on sale for $150 off MSRP. Shipping is free, and B&H charges NY tax only: - 13″ 2.7GHz/128GB Retina MacBook Pro (MF839LL/A): $... Read more
13-inch 1.6GHz/256GB MacBook Air on sale for...
Newegg has the 13″ 1.6GHz/256GB MacBook Air (MMGG2LL/A) on sale for $1029.99 including free shipping. Their price is $170 off MSRP, and it’s the lowest price available for this model. Choose Newegg... Read more
Apple refurbished Apple TVs available for up...
Apple has Certified Refurbished 32GB and 64GB Apple TVs available for up to $30 off the cost of new models. Apple’s standard one-year warranty is included with each model, and shipping is free: -... Read more
27-inch 3.3GHz 5K iMac on sale for $2099, sav...
B&H Photo has the 27″ 3.3GHz 5K Apple iMac on sale for $2099.99 including free shipping plus NY sales tax only. Their price is $200 off MSRP. Amazon also has the 27″ 3.3GHz 5K iMac on sale for $... Read more
21-inch iMacs on sale for up to $111 off MSRP
B&H Photo has select 21″ Apple iMacs on sale for up to $110 off MSRP, each including free shipping plus NY sales tax only: - 21″ 2.8GHz iMac: $1189 $110 off MSRP - 21″ 1.6GHz iMac: $999 $100 off... Read more
12-inch 1.2GHz Retina MacBooks on sale for $2...
Newegg has the 12″ 1.2GHz Space Gray Retina MacBook (sku MLH82LL/A) on sale for $1349.99 including free shipping. Their price is $250 off MSRP, and it’s the lowest price available for this model.... Read more
13-inch MacBook Airs on sale for $100 off MSR...
B&H Photo has 13″ MacBook Airs on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/128GB MacBook Air (MMGF2LL/A): $899 $100 off MSRP - 13″ 1.6GHz/... Read more
9-inch 32GB Silver iPad Pro on sale for $549,...
B&H Photo has the 9.7″ 32GB Silver Apple iPad Pro on sale for $549 for a limited time. Shipping is free, and B&H charges NY sales tax only. Their price is $50 off standard MSRP for this model... Read more
13-inch 2.0GHz Apple MacBook Pros on sale for...
B&H has the non-Touch Bar 13″ 2.0GHz MacBook Pros in stock today and on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 2.0GHz MacBook Pro Space Gray (... Read more
15-inch Touch Bar MacBook Pros on sale for up...
B&H Photo has the new 2016 15″ Apple Touch Bar MacBook Pros in stock today and on sale for up to $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.7GHz Touch Bar... Read more

Jobs Board

*Apple* Solutions Consultant - Apple (United...
# Apple Solutions Consultant Job Number: 55676865 Los Angeles, California, United States Posted: Feb. 22, 2017 Weekly Hours: 40.00 **Job Summary** As an Apple Read more
Programmer/Editor *Apple* Music Dance - App...
# Programmer/Editor Apple Music Dance Job Number: 55565967 Culver City, California, United States Posted: Feb. 23, 2017 Weekly Hours: **Job Summary** Apple Music Read more
Digital Marketing Specialist - *Apple* iClo...
# Digital Marketing Specialist - Apple iCloud Job Number: 54729233 Culver City, California, United States Posted: Feb. 22, 2017 Weekly Hours: 40.00 **Job Summary** Read more
Marketing Specialist, iTunes & *Apple*...
# Marketing Specialist, iTunes & Apple Music Job Number: 55704205 Culver City, California, United States Posted: Feb. 23, 2017 Weekly Hours: 40.00 **Job Summary** Read more
*Apple* Wireless Lead - T-ROC - The Retail O...
…of knowledge in wireless sales and activations to the Beautiful and NEW APPLE Experiencestore within MACYS. THIS role, APPLE Wireless Lead, isbrandnewas MACYS Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.