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

BetterTouchTool 2.260 - 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
Chromium 59.0.3071.115 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. Version 59.0.3071.115: This update has no Flash plug... Read more
SyncTwoFolders 2.2.3 - Syncs two user-sp...
SyncTwoFolders simply synchronizes two folders. It supports synchronization across mounted network drives and it is a possibility to run a simulation showing in a log what will be done. Please visit... Read more
Myriad 4.1 - $79.00
Myriad is, simply put, one of the best audio batch processors. Totally redesigned, it looks beautiful and delivers incredible performance. Let Myriad do the heavy lifting while you get back to doing... Read more
Suitcase Fusion 7 18.2.4 - Font manageme...
Suitcase Fusion 7 is the creative professional's font manager. Every professional font manager should deliver the basics: spectacular previews, powerful search tools, and efficient font organization... Read more
SoftRAID 5.6.1 - High-quality RAID manag...
SoftRAID allows you to create and manage disk arrays to increase performance and reliability. SoftRAID allows the user to create and manage RAID 4 and 5 volumes, RAID 1+0, and RAID 1 (Mirror) and... Read more
BetterTouchTool 2.25 - Customize Multi-T...
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
Google Chrome 59.0.3071.115 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Google Chrome 59.0.3071.115 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
SoftRAID 5.6.1 - High-quality RAID manag...
SoftRAID allows you to create and manage disk arrays to increase performance and reliability. SoftRAID allows the user to create and manage RAID 4 and 5 volumes, RAID 1+0, and RAID 1 (Mirror) and... Read more

Latest Forum Discussions

See All

Ravenscroft 275 Piano (Music)
Ravenscroft 275 Piano 1.0.0 Device: iOS Universal Category: Music Price: $35.99, Version: 1.0.0 (iTunes) Description: Experience the splendor of a Ravenscroft Grand with the most realistic sounding piano ever created for iOS. Launch... | Read more »
This War of Mine gets a new ending and m...
This War of Mine just got a big new update, featuring free DLC that adds a new ending to the game, among other exciting changes. The update is celebrating the game's two-year release anniversary. Apart from the new ending, which will be quite... | Read more »
Summon eight new heroes in Fire Emblem H...
Nintendo keeps coming at us with Fire Emblem Heroes updates, and it doesn't look like that trend is stopping anytime soon. The folks behind the game have just announced the new War of the Clerics Voting Gauntlet, expected to start next Tuesday. [... | Read more »
The best deals on the App Store this wee...
iOS publishers are pulling out all the stops this week -- there's a huge number of seriously great games at discounted prices this week. Let's not waste any time and get right down to business. [Read more] | Read more »
The House of da Vinci (Games)
The House of da Vinci 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: Enter The House of Da Vinci, a new must-try 3D puzzle adventure game. Solve mechanical puzzles, discover hidden... | Read more »
Solve the disappearance of history’s gre...
Blue Brain Games invites you to indulge in an immersive hands-on 3D puzzle adventure in similar vein to The Room series, with its debut release The House of Da Vinci. Set during the historic period of the Italian Renaissance (when Leonardo himself... | Read more »
Age of Rivals (Games)
Age of Rivals 3.3 Device: iOS Universal Category: Games Price: $.99, Version: 3.3 (iTunes) Description: Deep civilization-building strategy in a fast-paced card game! | Read more »
Panthera Frontier (Games)
Panthera Frontier 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Angry Birds Evolution beginner's gu...
Angry Birds changes things up a fair bit in its latest iteration, Angry Birds Evolution. The familiar sling-shot physics mechanics are still there, but the game now features team-based gameplay, RPG elements, and a new top-down view. With all of... | Read more »
Sega Forever is for the retro game fans
Sega is launching a new retro games service titled Sega Forever, in a move that's sure to delight games enthusiasts with a bit of nostalgia. Sega's releasing five classic games for free. The titles include Sonic the Hedgehog, Phantasy Star II,... | Read more »

Price Scanner via MacPrices.net

Use Apple’s Education discount to save up to...
Purchase a new Mac using Apple’s Education discount, and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free: - 15″ 2... Read more
Clearance 27-inch 3.3GHz 5K iMac available fo...
Amazon clearance 27″ 3.3GHz 5K iMacs (MK482LL/A) available for $1799.90 including free shipping. Their price is $500 off original MSRP, and it’s the lowest price available for this model from any... Read more
13-inch 1.8GHz/256GB MacBook Air on sale for...
B&H Photo has the updated 2017 13″ 1.8GHz/256GB MacBook Air (MQD42LL/A) in stock and on sale for $1129 including free shipping plus NY & NJ tax only. Their price is $70 off MSRP. Read more
27-inch 3.4GHz iMac on sale for $1699, save $...
B&H Photo has the new 2017 27″ 3.4GHz iMac (MNE92LL/A) in stock and on sale for $1699 including free shipping plus NY & NJ sales tax only. Their price is $100 off MSRP. Read more
21-inch 2.3GHz iMac on sale for $1049, save $...
B&H Photo has the new 2017 21″ 2.3GHz iMac (MMQA2LL/A) in stock and on sale for $1049 including free shipping plus NY & NJ tax only. Their price is $50 off MSRP. Read more
ABBYY TextGrabber 6 for iOS Implements Instan...
ABBYY has announced the release of TextGrabber 6.0.0, an important feature update to the company’s productivity app developed for iOS and Android devices. TextGrabber 6.0 now offers Real-Time... Read more
vPhone, First Smartphone That Can’t Be Lost,...
Austin, Texas based Hypori has introduced the vPhone, a virtual smartphone that affords every business user the benefits of separate work and personal phones, conveniently delivered on a single... Read more
Save this weekend with 2016 refurbished MacBo...
Apple has dropped prices on Certified Refurbished 2016 15″ and 13″ MacBook Pros by as much as $590 off original MSRP. An Apple one-year warranty is included with each model, and shipping is free: -... Read more
New 27-inch 3.4GHz iMac on sale for $1699, sa...
MacMall has the new 2017 27″ 3.4GHz iMac (MNE92LL/A) in stock and on sale for $1699 including free shipping. Their price is $100 off MSRP. Read more
Clearance 2016 MacBook Pros available for up...
B&H Photo has clearance 2016 13″ and 15″ MacBook Pros in stock today and on sale for up to $400 off original MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: - 15″ 2.7GHz... Read more

Jobs Board

*Apple* News Product Marketing Mgr., Publish...
…organizational consensus on strategy and vision for publisher tools, authoring, and Apple News Format.Carries this strategy and vision across the organization to Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Security Data Analyst - *Apple* Information...
…data sources need to be collected to allow Information Security to better protect Apple employees and customers from a wide range of threats.Act as the subject matter Read more
Lead *Apple* Solutions Consultant - Apple I...
…integrity, and trust.Success Metrics/Key Performance Indicators:Quantitative* Year over Year growth in Apple Product and Beyond the Box sales in the assigned Point of Read more
*Apple* Solutions Consultant till v%u00E5r...
…ethics, integrity, and trust.Success Metrics/Key Performance Indicators:QuantitativeYear over Year growth in Apple Product and Beyond the Box sales in the assigned Point Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.