Click here to Skip to main content
11,802,439 members (69,649 online)
Click here to Skip to main content

Automate Photoshop

, 17 Jul 2006 CPOL 80.9K 2.3K 30
Rate this:
Please Sign up or sign in to vote.
How to automate Photoshop with VB.NET.


You have a bunch of pictures, but they don't look that great. You'd like to increase contrast, or improve colors. Luckily, you have Adobe Photoshop CS2 with its wonderful Auto Contrast function. No problem if it's all about tens of pictures. What if there are hundreds, or even thousands? Open every picture in Photoshop, apply adjustments, save it... Oh, it is boring. Why not just automate all these tasks and let Photoshop work hard while we are lying on the beach?

Using the code

Let's do it in eight easy steps:

  1. Create a Windows Application project.
  2. Add a reference to the Photoshop Object Library.

  3. To use the Photoshop object in our application, import the Photoshop namespace:
    Imports Photoshop
  4. Declare the two objects we are going to work with (the Photoshop Application object and the Photoshop Document object):
    Dim appRef As Photoshop.Application
    Dim currentDoc As Photoshop.Document
  5. Now, we should define the folder containing our pictures and the folder for the improved pictures. Add two FolderBrowseDialog controls (input and output folders can be the same, the pictures will just be overwritten; however, it is not always such a good idea). Also, add the necessary TextBoxes and Button controls.

    Add Button controls to start the process and to finish the application.

  6. Open the Photoshop application when our form is loading. Set Photoshop as invisible (we still see it when it is starting, though).
    appRef = New ApplicationClass
    appRef.Visible = False
    appRef.DisplayDialogs = PsDialogModes.psDisplayNoDialogs
    appRef.PlaybackDisplayDialogs = PsDialogModes.psDisplayNoDialogs
  7. On the application exit event, don't forget to quit Photoshop as well.
  8. Finally, the last step - process every image in the folder.
    Dim files() As String = IO.Directory.GetFiles(txtFrom.Text, "*.jpg")
    For Each fl As String In files
       currentDoc = appRef.Open(fl)
       Dim currentLayer As Photoshop.ArtLayer = _
           CType(currentDoc.ActiveLayer, Photoshop.ArtLayer)
       Dim jpeg As New Photoshop.JPEGSaveOptions
       jpeg.Quality = 8
       currentDoc.SaveAs(txtTo.Text + _
          IO.Path.GetFileName(fl), jpeg, False, 2)

Enjoy your life, and when you are back, you will find all your pictures just perfect.

Points of interest

We applied only one Auto Contrast adjustment feature. Sure there is zillion possibilities in Photoshop to improve the image we could use in our application. Just do a research of the Photoshop Document object.

Photoshop has a feature called batch processing. It could be extremely useful in our automation process. However, for some unknown reason, I could not make it work.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Web Developer
Canada Canada
Lifelong software developer. From IBM mainframes to Microsoft .Net, and lots in between.
Born and raised in Vilnius, Lithuania. Today live in Toronto, Ontario. Tomorrow - who knows?

You may also be interested in...

Comments and Discussions

Questioncom object not listed Pin
doc-zoidberg20-Aug-15 22:22
memberdoc-zoidberg20-Aug-15 22:22 
Questionhow to add different version photoshop refernce at the same time Pin
Member 1146806825-Feb-15 3:30
professionalMember 1146806825-Feb-15 3:30 
AnswerRe: how to add different version photoshop refernce at the same time Pin
tamilpuyal_2816-Mar-15 5:57
membertamilpuyal_2816-Mar-15 5:57 
QuestionSet the ForeGround color or the BackGround color from a Drawing.Color Pin
Member 1113113712-Feb-15 10:50
memberMember 1113113712-Feb-15 10:50 
AnswerRe: Set the ForeGround color or the BackGround color from a Drawing.Color Pin
vadimas13-Feb-15 4:42
membervadimas13-Feb-15 4:42 
Questioncreateobject("Photoshop.Application") gives ActiveX error in VB Pin
solankinkdpr29-Jan-13 2:41
membersolankinkdpr29-Jan-13 2:41 
Questioninternal error in photoshop elements automation Pin
cooldj_0075-Nov-12 18:36
membercooldj_0075-Nov-12 18:36 
GeneralSet Photoshop as invisible when iam using it from Pin
krishnaramu10-Feb-11 1:17
memberkrishnaramu10-Feb-11 1:17 
GeneralRe: Set Photoshop as invisible when iam using it from Pin
tamilpuyal_2814-Apr-11 2:26
membertamilpuyal_2814-Apr-11 2:26 
GeneralMy vote of 5 Pin
Yogesh Babarao Shiraskar15-Jul-10 7:15
memberYogesh Babarao Shiraskar15-Jul-10 7:15 
GeneralPhotoshop like image editor with a drag and drop image gallery Pin
ikbegins1-Jun-10 23:34
memberikbegins1-Jun-10 23:34 
GeneralRe: Photoshop like image editor with a drag and drop image gallery Pin
tamilpuyal_284-Jun-10 6:52
membertamilpuyal_284-Jun-10 6:52 
GeneralPhotoshop CS2 COM Object problems Pin
blaine landish10-Jun-09 9:40
memberblaine landish10-Jun-09 9:40 
GeneralRe: Photoshop CS2 COM Object problems Pin
vadimas10-Jun-09 10:34
membervadimas10-Jun-09 10:34 
QuestionHow to Handle Adjustment Dialog Boxes Pin
kamalraaja11-Apr-07 3:53
memberkamalraaja11-Apr-07 3:53 
Questionhow to undo and redo? Pin
kamalraaja21-Dec-06 20:14
memberkamalraaja21-Dec-06 20:14 
QuestionHow to change focus of Opened images in photoshop Pin
Samatha.S20-Dec-06 1:26
memberSamatha.S20-Dec-06 1:26 
Generaladd menu in photoshop by vb code Pin
farschadnaji17-Nov-06 5:58
memberfarschadnaji17-Nov-06 5:58 
QuestionHi.. Thanks for this great code Pin
chingyen23-Aug-06 22:26
memberchingyen23-Aug-06 22:26 
Questionwithout photoshop Pin
tomsmaily1232-Aug-06 20:55
membertomsmaily1232-Aug-06 20:55 
AnswerRe: without photoshop [modified] Pin
technomanceraus2-Aug-06 21:10
membertechnomanceraus2-Aug-06 21:10 
JokeRe: without photoshop [modified] Pin
Aviv239-Aug-06 15:49
memberAviv239-Aug-06 15:49 
GeneralRe: without photoshop Pin
vadimas10-Aug-06 3:25
membervadimas10-Aug-06 3:25 
GeneralMuch better solution Pin
SAKryukov26-Jul-06 5:02
memberSAKryukov26-Jul-06 5:02 
GeneralDroplets Pin
Arkett25-Jul-06 22:21
memberArkett25-Jul-06 22:21 
GeneralRe: Droplets Pin
vadimas26-Jul-06 4:27
membervadimas26-Jul-06 4:27 
GeneralRe: Droplets Pin
mattj126-Jul-06 8:28
membermattj126-Jul-06 8:28 
GeneralRe: Droplets Pin
Zikovsky5-Sep-06 10:48
memberZikovsky5-Sep-06 10:48 
GeneralRe: Droplets Pin
SAKryukov10-Nov-09 7:17
memberSAKryukov10-Nov-09 7:17 
GeneralGreat ! Pin
LaFéeClochette25-Jul-06 2:58
memberLaFéeClochette25-Jul-06 2:58 
GeneralRe: Great ! Pin
vadimas25-Jul-06 4:13
membervadimas25-Jul-06 4:13 
GeneralRe: Great ! Pin
LaFéeClochette25-Jul-06 6:29
memberLaFéeClochette25-Jul-06 6:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.151002.1 | Last Updated 17 Jul 2006
Article Copyright 2006 by vadimas
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid