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

Box Sync 4.0.6567 - Online synchronizati...
Box Sync gives you a hard-drive in the Cloud for online storage. Note: You must first sign up to use Box. What if the files you need are on your laptop -- but you're on the road with your iPhone? No... Read more
Carbon Copy Cloner 4.1.4 - Easy-to-use b...
Carbon Copy Cloner backups are better than ordinary backups. Suppose the unthinkable happens while you're under deadline to finish a project: your Mac is unresponsive and all you hear is an ominous,... Read more
OmniGraffle Pro 6.3.1 - Create diagrams,...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
Monosnap 3.1.2 - Versatile screenshot ut...
Monosnap lets you capture screenshots, share files, and record video and .gifs! Capture: Capture full screen, just part of the screen, or a selected window Make your crop area pixel perfect with... Read more
Alfred 2.7.2 - Quick launcher for apps a...
Alfred is an award-winning productivity application for OS X. Alfred saves you time when you search for files online or on your Mac. Be more productive with hotkeys, keywords, and file actions at... Read more
Microsoft Remote Desktop 8.0.19 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more
OmniGraffle 6.3 - Create diagrams, flow...
OmniGraffle helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use Graffle to... Read more
PDFKey Pro 4.3.2 - Edit and print passwo...
PDFKey Pro can unlock PDF documents protected for printing and copying when you've forgotten your password. It can now also protect your PDF files with a password to prevent unauthorized access and/... Read more
Ableton Live 9.2.2 - Record music using...
Ableton Live lets you create and record music on your Mac. Use digital instruments, pre-recorded sounds, and sampled loops to arrange, produce, and perform your music like never before. Ableton Live... Read more
Macs Fan Control 1.3.1.0 - Monitor and c...
Macs Fan Control allows you to monitor and control almost any aspect of your computer's fans, with support for controlling fan speed, temperature sensors pane, menu-bar icon, and autostart with... Read more

This Week at 148Apps: August 24-28, 2015
The Apps of August With 148Apps How do you know what apps are worth your time and money? Just look to the review team at 148Apps. We sort through the chaos and find the apps you're looking for. The ones we love become Editor’s Choice, standing out... | Read more »
NASCAR in Real Racing 3? Sure, Why Not?
I have to give Firemonkeys credit - it's very cool of them to add NASCAR to Real Racing 3 via an update rather than making a separate game for it. But that's a different discussion for another time; for now let's sit back and enjoy driving in... | Read more »
The nuyu is an Inexpensive Activity Moni...
Today, Health o Meter nuyu has announced a series of health and fitness-related products, including the aforementioned activity monitor along with a wireless scale. All at a decent pricepoint, no less. [Read more] | Read more »
The Makers of Overkill are Trying Someth...
Craneballs, the studio responsible for the Overkill series, is taking a little break from all that violence (a little break) to bring us Cube Worm - a 3D take on one of the most classic PC/calculator games in existence. [Read more] | Read more »
The Sandbox Welcomes Cutethulu in its La...
Another month, another update to Pixowl's The Sandbox. This time players can say hello to "Cutethulu" - an adorable little rendition of perhaps the most well known (and infamous) of the Elder Gods. [Read more] | Read more »
ReBoard: Revolutionary Keyboard (Utilit...
ReBoard: Revolutionary Keyboard 1.0 Device: iOS Universal Category: Utilities Price: $1.99, Version: 1.0 (iTunes) Description: Do everything within the keyboard without switching apps! If you are in WhatsApp, how do you schedule a... | Read more »
Tiny Empire (Games)
Tiny Empire 1.1.3 Device: iOS Universal Category: Games Price: $2.99, Version: 1.1.3 (iTunes) Description: Launch cannonballs and blow tiny orcs into thousands of pieces in this intuitive fantasy-themed puzzle shooter! Embark on an... | Read more »
Astropad Mini (Productivity)
Astropad Mini 1.0 Device: iOS iPhone Category: Productivity Price: $4.99, Version: 1.0 (iTunes) Description: *** 50% off introductory price! ​*** Get the high-end experience of a Wacom tablet at a fraction of the price with Astropad... | Read more »
Emo Chorus (Music)
Emo Chorus 1.0.0 Device: iOS Universal Category: Music Price: $1.99, Version: 1.0.0 (iTunes) Description: Realistic Choir simulator ranging from simple Chorus emulation to full ensemble Choir with 128 members. ### introductory offer... | Read more »
Forest Spirit (Games)
Forest Spirit 1.0.5 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.5 (iTunes) Description: | Read more »

Price Scanner via MacPrices.net

WaterField Designs Unveils American-Made, All...
San Francisco’s WaterField Designs today unveiled their all-leather Cozmo 2.0 — an elegant attach laptop bag with carefully-designed features to suit any business environment. The Cozmo 2.0 is... Read more
Apple’s 2015 Back to School promotion: Free B...
Purchase a new Mac or iPad at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free,... Read more
128GB MacBook Airs on sale for $100 off MSRP,...
B&H Photo has 11″ & 13″ MacBook Airs with 128GB SSDs on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air: $799.99, $100 off MSRP... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
The Apple Store has Apple Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.... Read more
27-inch 3.2GHz iMac on sale for $1679, save $...
B&H Photo has the 27″ 3.2GHz iMac on sale for $1679.99 including free shipping plus NY sales tax only. Their price is $120 off MSRP. Read more
Apple and Cisco Partner to Deliver Fast-Lane...
Apple and Cisco have announced a partnership to create a “fast lane” for iOS business users by optimizing Cisco networks for iOS devices and apps. The alliance integrates iPhone with Cisco enterprise... Read more
Apple offering refurbished 2015 13-inch Retin...
The Apple Store is offering Apple Certified Refurbished 2015 13″ Retina MacBook Pros for up to $270 (15%) off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Apple refurbished 2015 MacBook Airs available...
The Apple Store has Apple Certified Refurbished 2015 11″ and 13″ MacBook Airs (the latest models), available for up to $180 off the cost of new models. An Apple one-year warranty is included with... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 1.4GHz iMac: $999.99 $100 off - 21″ 2.7GHz iMac: $1199.99 $100 off - 21″ 2.9GHz iMac... Read more
5K iMacs on sale for up to $150 off MSRP, fre...
B&H Photo has the 27″ 3.3GHz 5K iMac on sale for $1899.99 including free shipping plus NY tax only. Their price is $100 off MSRP. They have the 27″ 3.5GHz 5K iMac on sale for $2149.99 $2199.99, $... Read more

Jobs Board

*Apple* Evangelist - JAMF Software (United S...
The Apple Evangelist is responsible for building and cultivating strategic relationships with Apple 's small and mid-market business development field teams. This Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Desktop Analyst - KDS Staffing (Unit...
…field and consistent professional recruiting achievement. Job Description: Title: Apple Desktop AnalystPosition Type: Full-time PermanentLocation: White Plains, NYHot Read more
*Apple* Systems Engineer (Mclean, VA and NYC...
Title: Apple Systems Engineer (Mclean, VA and NYC) Location: United States-New York-New York-200 Park Ave (22005) Other Locations: United States-Virginia-Vienna-Towers Read more
*Apple* Systems Engineer (Mclean, VA and NYC...
…Assist in providing strategic direction and technical leadership within the Apple portfolio, including desktops, laptops, and printing environment. This person will Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.