<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Photoshop, etc. | Random thoughts on Photoshop, Coding and all the rest</title>
	
	<link>http://www.davidebarranca.com</link>
	<description>Random thoughts on Photoshop, Coding and all the rest</description>
	<lastBuildDate>Sun, 05 May 2013 21:16:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PhotoshopAndCoding" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="photoshopandcoding" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Sublime Text 2 ExtendScript Photoshop package</title>
		<link>http://www.davidebarranca.com/2013/05/sublime-text-2-extendscript-photoshop-build-package/</link>
		<comments>http://www.davidebarranca.com/2013/05/sublime-text-2-extendscript-photoshop-build-package/#comments</comments>
		<pubDate>Sun, 05 May 2013 21:16:54 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[ExtendScript / Javascript]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Extendscript]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[Sublime Text 2]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=2019</guid>
		<description><![CDATA[If you aren't in love with Adobe's ExtendScript Toolkit, welcome to the club. I've come up with a Sublime Text 2 build system package that lets you run JSX scripts directly from Sublime Text targeting Photoshop, Command+B or CTRL+B and voilà!]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="description">This post contains a <a title="Sublime Text website" href="http://www.sublimetext.com/" target="_blank">Sublime Text 2</a> custom build package that lets you run ExtendScript code targeting Adobe Photoshop.</span> I&#8217;ve coded it applying few tweaks and customization to an existing package made by <a title="Sebastien Lavoie website" href="http://seblavoie.com" target="_blank">Sébastien Lavoie</a> for After Effects scripting. <span id="more-2019"></span></p>
<h2>What is that for?</h2>
<p>When you code Photoshop scripting, chances are that you do it with the <strong><span itemprop="mentions" itemscope="" itemtype="http://schema.org/SoftwareApplication">ExtendScript ToolKit</span></strong> (aka ESTK). While this Adobe provided piece of software has some unique features that make it very efficient while debugging and looking for DOM documentation, as an editor it really sucks. I&#8217;m sorry about that, but compared to other modern editors it&#8217;s barely usable.</p>
<p><span itemprop="mentions" itemscope="" itemtype="http://schema.org/SoftwareApplication"><a itemprop="url" title="Sublime Text website" href="http://www.sublimetext.com/" target="_blank"><span itemprop="name">Sublime Text 2</span></a></span>, conversely, is an amazing editor with tons of features and plugins. Yet so far the only workflow for Photoshop scripters was to code <span itemprop="mentions">ExtendScript</span> (which is a superset of Javascript) in Sublime Text, then copy and paste it to ESTK and run the script from ESTK.</p>
<p>This custom build package lets you run ExtendScript code targeting Photoshop in Sublime Text 2. Type ⌘B (or ctrl+B) and your code is being executed in the host app!</p>
<h2>Installation</h2>
<p>Download <span itemprop="about" itemscope="" itemtype="http://schema.org/SoftwareApplication"><a itemprop="downloadUrl" title="ExtendScript-PS - Sublime Text 2 build package for Photoshop ExtendScript" href="http://bit.ly/12GsLQx" target="_blank"><span itemprop="name">ExtendScript-PS</span></a>, the <span itemprop="applicationSuite">Sublime Text 2</span> <span itemprop="applicationCategory">build package</span> for Photoshop ExtendScript.</span> Unzip it and move the <strong>ExtendScript-PS</strong> folder in:</p>
<blockquote><p>[OSX] ~/Library/Application Support/Sublime Text 2/Packages</p>
<p>[Win] ~\AppData\Roaming\Sublime Text 2\Packages</p></blockquote>
<p>If you&#8217;re unsure where the Packages are located on your system, find them from the Sublime Text menu: <em>Preferences &#8211; Browse Packages&#8230;</em> Do an app restart, just in case!</p>
<h2>How to use it</h2>
<p>Write your ExtendScript as usual, and save the JSX file you&#8217;re working on.</p>
<p><img class="alignleft size-medium wp-image-2030" alt="Build System" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/BuildSystem-300x280.png" width="300" height="280" />Make sure the <em>Tools &#8211; Build System &#8211; ExtendScript_PS</em> is checked, then build the script with ⌘B (Mac), ctrl+B (PC) or the <em>Tools &#8211; Build</em> menu item.</p>
<p>As you build it, the JSX script is copied to the Photoshop&#8217;s Presets/Scripts/ folder, (a confirmation message appears on the Sublime Text 2 console), then it&#8217;s run in the host application.</p>
<p>Depending on your platform and/or PS version, a couple of tweaks may be needed in order to make the it run in your system: please open the ExtendScript-PS folder (in the Sublime Text 2 packages) and read along.</p>
<h2>Mac Hacks</h2>
<p>The build package, as it is, works on Photoshop CS6. Check that the <code>build.sh</code> file contains information that matches your system in these lines:</p><pre class="crayon-plain-tag"># Your CS version
version="CS6";

# Adobe Photoshop folder location
base_path="Applications";

# Full path
full_path="/${base_path}/Adobe Photoshop ${version}/Presets/Scripts";</pre><p>Particularly, set the correct:</p>
<ul>
<li>Photoshop version (CS5, CS6&#8230;) which has to match the application&#8217;s folder name.</li>
<li>Photoshop paths &#8211; application and Scripts &#8211; in case the localized string is something different from \Presets\Scripts\</li>
</ul>
<p>In the <code>script.scpt</code> file make sure above mentioned information are correct too (version, paths):</p><pre class="crayon-plain-tag">on run arg

  set fileName to arg's item 1
  set psVersion to "CS6"
  set basePath to "Applications"
  set theFile to POSIX path of (basePath &amp; ":Adobe Photoshop " &amp; psVersion &amp; ":Presets:Scripts:" &amp; fileName)

  open for access theFile
  set fileContents to (read theFile)
  close access theFile

  tell application "Adobe Photoshop CS6"
    do javascript fileContents (* show debugger before running / never / on runtime error *)
    activate
  end tell

end run</pre><p>Moreover (see line 14) you can uncomment <strong>show debugger</strong> to activate ExtendScript Toolkit: available options are either <em>before running</em>, <em>never</em>, <em>on runtime error</em>.</p>
<h2>Windows Hacks</h2>
<p>The build package, as it is, works on Photoshop CS6 (64 bit). I&#8217;ve tested it on a virtualized Windows 7, so feedback from actual PC users is welcome. Check that the <code>build.bat</code> file contains information that matches your system in these lines:</p><pre class="crayon-plain-tag">:: Change this accordingly to your CS version
set version=CS6

:: Adobe Photoshop folder location 64 bit versions:
set ps_folder_path=c:\Program Files\Adobe\Adobe Photoshop %version% (64 Bit)

:: Adobe Photoshop folder location 32 bit versions:
:: set ps_folder_path=c:\Program Files (x86)\Adobe\Adobe Photoshop %version%

set ps_scripts_folder_path=%ps_folder_path%\Presets\Scripts</pre><p>Particularly, set the correct:</p>
<ul>
<li><span style="line-height: 13px;">Photoshop version (CS5, CS6&#8230;) which has to match the application&#8217;s folder name.</span></li>
<li>Photoshop folder (in the comments there&#8217;s the default 32 bit path if you need it) &#8211; change it accordingly if PS has been installed in a custom disk/directory.</li>
<li>Photoshop Scripts folder &#8211; in case the localized path is something different from \Presets\Scripts\</li>
</ul>
<h2>Credits</h2>
<p>I&#8217;ve cloned from GitHub the original <a title="After Effects Sublime Text 2 package" href="https://github.com/seblavoie/After-Effects-Scripting-Sublime-Text-Package" target="_blank">Adobe After Effects package for Sublime Text 2</a> made by <a title="Sebastien Lavoie" href="http://seblavoie.com" target="_blank">Sébastien Lavoie</a> - which I have tweaked to fit Photoshop&#8217;s scripting needs.</p>
<p>I&#8217;m a poor hacker, so if the package doesn&#8217;t work properly it&#8217;s my fault only. Feedback is welcome as usual, happy coding!<br />
<meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/05/logo.jpg" /></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/4266_0Y0Agk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/05/sublime-text-2-extendscript-photoshop-build-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DropBox, Git and SublimeText on the Mac</title>
		<link>http://www.davidebarranca.com/2013/05/dropbox-git-sublime-text-mac-osx/</link>
		<comments>http://www.davidebarranca.com/2013/05/dropbox-git-sublime-text-mac-osx/#comments</comments>
		<pubDate>Wed, 01 May 2013 11:25:30 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[DropBox]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[Sublime Text]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1968</guid>
		<description><![CDATA[As a freelance developer I've been using my DropBox account as the projects cloud backup - yet if you're willing to setup it as a private GitHub repository for version control, possibly in conjunction with a SublimeText Git plugin... chances are that you'll spend some time looking for issue workarounds. Why bother, I've gathered them here for you!]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="description">This post will describe how to setup a local Git repository, sync it with a private DropBox repository for cloud backup (as it were a GitHub hosted one) and use the Sublime Text Git plugin to manage it.</span></p>
<h2>Get ready with Git</h2>
<p>Download the latest <span itemprop="about" itempscope itemtype="http://schema.org/SoftwareApplication"><span itemprop="name">Git</span> version from the <a title="Git download" href="http://git-scm.com/downloads" target="_blank" itemprop="url">official website</a></span>. To date, the latest package available is called <code>git-1.8.2.1-intel-universal-snow-leopard.dmg</code> (I&#8217;m running it successfully on OSX 10.8.3 Mountain Lion). Launch the installer, and when it&#8217;s done open the <strong>Terminal</strong> (Applications/Utilities/Terminal.app) and type <code>which git</code></p>
<p><img class="aligncenter size-full wp-image-1970" alt="which git" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/which_git.png" width="523" height="146" /></p>
<p>This is what I got, meaning that the path for the git executable is <code>/usr/local/bin/git</code> (or whatever it is on your machine) which is something you&#8217;ve to remember.</p>
<p><a href="http://mac.github.com" target="_blank"><img class="alignleft size-full wp-image-1971" alt="GitHub app" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/github.jpg" width="200" height="200" /></a>If you want (I do), you can download as well a <strong>GUI Client</strong> &#8211; providing you with a nice graphic interface. There are plenty of them, I&#8217;ll stick with the free original <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication"><a title="GitHub app for Mac" href="http://mac.github.com" target="_blank" itemprop="url"><span itemprop="name">GitHub</span> app</a></span> for the Mac.</p>
<p>Depending on your skills (I&#8217;m not a very seasoned Git user, to put it mildly) and preferences, you&#8217;ll be able to drive your version control system either via command-line and/or visually through the GitHub app.</p>
<h2>Get ready with Sublime Text</h2>
<p><span itemprop="about" itemscope itemtype="http://schema.org/SoftwareApplication"><a title="Sublime Text official website" href="http://www.sublimetext.com" target="_blank" itemprop="url"><span itemprop="name">Sublime Text</span></a></span> is a really powerful text editor (TextMate is another one I&#8217;d suggest): among the plethora of available plugins, install the free <a title="Sublime Package Control" href="http://wbond.net/sublime_packages/package_control" target="_blank">Sublime Package Control</a> first and you&#8217;ll never regret it (installation instruction <a title="Installation " href="http://wbond.net/sublime_packages/package_control/installation" target="_blank">here</a>). It will help you look for, and install, all the (other) plugins you may ever need.</p>
<p>Then, in Sublime Text do the usual ⌘⇧P to open the <strong>Command Palette</strong> and start typing &#8220;install&#8221; &#8211; as you type, the actual command will appear, which is <code>Package Control: Install Package</code>. Then look for <code>Git</code> and Enter to install it &#8211; visit also at the <a title="Sublime Text Git plugin" href="https://github.com/kemayo/sublime-text-2-git/wiki" target="_blank">plugin official page</a> for more information.</p>
<p>So far so good &#8211; yet the Git plugin isn&#8217;t working yet because Sublime Text needs to know the Git&#8217;s <strong>path</strong> (the one you&#8217;ve found before). Open with a text editor of your choice (guess which one!) the file called <code>Git.sublime-settings</code> found here:</p>
<p><code>/Users/&lt;yourUser&gt;/Library/Application Support/Sublime Text 2/Packages/Git/</code></p>
<p>And look for the following lines:</p><pre class="crayon-plain-tag">// if present, use this command instead of plain "git"
  // e.g. "/Users/kemayo/bin/git" or "C:\bin\git.exe"
  ,"git_command": "/usr/local/git/bin/git"</pre><p>Of course be careful to type the correct path for the <code>git_command</code>, (recall what was the output of the <code>which git</code> command) then save and close (this issue is covered <a title="Git plugin issue" href="https://github.com/kemayo/sublime-text-2-git/issues/96" target="_blank">here</a>).</p>
<h2>Set a DropBox &#8220;remote&#8221; repository</h2>
<p>One thing you could do (I did it &#8211; but it&#8217;s not what I&#8217;ll be suggesting) is to create a Local Repository in the <span itemprop="about" itemscope itemtype="http://schema.org/SoftwareApplication"><a title="Dropbox" href="http://www.dropbox.com" target="_blank" itemprop="url"><span itemprop="name">Dropbox</span></a></span> folder on your HD: here both your files and the <span itemprop="mentions">repository</span> are backed-up on DropBox servers. Unfortunately, this way you&#8217;re forced to keep all your dev stuff within the local DropBox folder &#8211; i.e. all your files &#8211; and this is not what you want.</p>
<p>As a more efficient alternative, you&#8217;ll keep a <strong>local repository</strong> in your usual development folder, then <strong>push it to a DropBox repository</strong> as it were a GitHub hosted one.</p>
<p>Let&#8217;s assume that your DropBox folder is <code>~/Dropbox</code> and the folder where you do your development is <code>~/dev/photoshop</code>. You&#8217;re going to work on a job called <code>psProject01</code>. Open the Terminal app.</p>
<h3><span style="line-height: 13px;">1. Create the DropBox repo</span></h3>
<p></p><pre class="crayon-plain-tag">$ cd /users/Davide/Dropbox
$ mkdir psProject01.git
$ cd psProject01.git
$ git init --bare</pre><p>You&#8217;ve made and initialized a <a title="Bare repositories" href="http://www.gitguys.com/topics/shared-repositories-should-be-bare-repositories/" target="_blank">bare</a> psProject01.git repository in the DropBox folder.</p>
<h3>2. Create the Dev repo</h3>
<p>This is on your usual development folder.</p><pre class="crayon-plain-tag">$ cd /users/Davide/dev/photoshop
$ mkdir psProject01
$ cd psProject01
$ git init</pre><p>As a result, a hidden <code>.git</code> folder is created inside <code>psProject01</code>. Now there are two empty repos, one on the DropBox folder, one on the dev folder.</p>
<h3>3. Link the repositories</h3>
<p>The following command will link the DropBox repository to the dev one (you&#8217;re still in <code>/users/Davide/Dev/photoshop/psProject01</code>)</p><pre class="crayon-plain-tag">$ git remote add origin /users/Davide/Dropbox/psProject01.git</pre><p>Someone is using a different syntax, but apparently the former one works too:</p><pre class="crayon-plain-tag">$ git remote add origin file:///users/Davide/Dropbox/psProject01.git</pre><p></p>
<h3>4. Add files to the Dev repo, Commit and Push</h3>
<p>For some reason, I haven&#8217;t been able to use the Sublime Text Git plugin to <code>Git: Add Current File</code> (i.e. create a new file in Sublime Text and add it to the repo, I get this error: &#8220;git branch: fatal: ambituous argument head unknow revision or path not in the working tree&#8221;) at least until a first file has been added via command line, the change committed and the repository pushed:</p><pre class="crayon-plain-tag">$ touch lib.jsx
$ git add lib.jsx
$ git commit -m "Initial commit, lib.jsx added"
$ git push origin master
  Counting objects: 3, done.
  Writing objects: 100% (3/3), 225 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  To /Users/Davide/Dropbox/repo.git
  * [new branch] master -&gt; master</pre><p>The above creates a <code>lib.jsx</code> file and adds it to the dev repository. Then the change is <strong>committed</strong>, and the repo is <strong>pushed</strong> to the DropBox &#8220;remote&#8221; repository (which is on the HD, but it&#8217;s the same command you&#8217;d write for an actual remotely hosted repo).</p>
<p>Mind you, if you look into the <code>/users/Davide/Dropbox/psProject01.git</code> folder you won&#8217;t see any <code>lib.jsx</code> file: <strong>the Dropbox repository only contains the Git&#8217;s guts</strong>. If you want to double-check that everything went fine (and the file is actually stored in the Git database), you can clone the repo to a different location, for instance:</p><pre class="crayon-plain-tag">$ cd /users/Davide/dev/
$ git clone /users/Davide/Dropbox/psProject01.git testRepository
  Cloning into 'testRepository'...
  done.</pre><p>Now if you inspect the <code>/users/Davide/dev/testRepository</code> folder you&#8217;ll find the <code>lib.jsx</code> file there! Does it make sense? Articles I&#8217;ve used as a reference for these commands are found <a title="Creating private Git repository" href="http://blog.maurizioturatti.com/2012/11/creating-your-private-git-repository-on.html" target="_blank">here</a> and <a title="Using dropbox as a private GitHub" href="http://jetheis.com/blog/2013/02/17/using-dropbox-as-a-private-github/" target="_blank">here</a>.</p>
<h2>Using Sublime Text Git plugin</h2>
<p>Now start doing something with your newly created <code>lib.jsx</code> file, like:</p><pre class="crayon-plain-tag">// Test file
#target photoshop

alert("Hello World");</pre><p>and save.</p>
<h3>Commit</h3>
<p>You can <strong>commit</strong> with ⌘⇧P to open the Command Palette and then typing <code>Git: Quick Commit</code>:</p>
<p><img class="aligncenter size-full wp-image-1999" alt="git_quick_commit_01" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_quick_commit_01.png" width="570" height="277" /></p>
<p>Then enter a short description:</p>
<p><img class="aligncenter size-full wp-image-1997" alt="git_quick_commit_02" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_quick_commit_02.png" width="593" height="276" /></p>
<p>And the following is the correct output:</p>
<p><img class="aligncenter size-full wp-image-1998" alt="git_quick_commit_03" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_quick_commit_03.png" width="673" height="308" /></p>
<h3>Log and Diff</h3>
<p>⌘⇧P and then <code>Git: Log Current File</code> shows you the commit history:</p>
<p><img class="aligncenter size-full wp-image-2003" alt="git_log_01" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_log_01.png" width="620" height="240" /></p>
<p>Choosing one item shows you the details:</p>
<p><img class="aligncenter size-full wp-image-2002" alt="git_log_02" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_log_02.png" width="811" height="555" itemprop="image"/></p>
<h3>Push</h3>
<p>⌘⇧P and then <code>Git: Push Current Branch</code>:</p>
<p><img class="aligncenter size-full wp-image-2004" alt="git_push" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/git_push.png" width="699" height="317" /></p>
<p>A list of <strong>supported commands</strong> is found in the <a title="Git plugin" href="https://github.com/kemayo/sublime-text-2-git/wiki" target="_blank">Sublime Text Git plugin page</a>.</p>
<h2>Using the GitHub app</h2>
<p>If you feel more comfortable with a graphic user interface, start the GitHub application you&#8217;ve downloaded before and add a <strong>Local Repository</strong> (pointing to the <strong>dev folder</strong>) with the little plus button in the bottom bar:</p>
<p><img class="aligncenter size-full wp-image-2007" alt="GitHub_01" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/GitHub_01.png" width="791" height="349" /></p>
<p>Double click on the psProject repository to see the History list:</p>
<p><img class="aligncenter size-full wp-image-2006" alt="GitHub_02" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/GitHub_02.png" width="819" height="419" /></p>
<p>And eventually double click on a single item to view the commit&#8217;s details:</p>
<p><img class="aligncenter size-full wp-image-2005" alt="GitHub_03" src="http://www.davidebarranca.com/wp-content/uploads/2013/05/GitHub_03.png" width="819" height="419" /></p>
<p>From the app you can Publish/Sync the branch, add new files, etc &#8211; the very same things Git command line allows you. I&#8217;m still finding my way around all the options, so as a very basic user I won&#8217;t suggest you anything but the initial setup.</p>
<h2>Caveat</h2>
<p>True, DropBox sync may let you run into troubles if you and someone else are<strong> pushing stuff at the very same time</strong>, but as a single developer this won&#8217;t be a problem. Be aware, just in case you use DropBox to share your Git repository to others.<br />
<meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/05/Git_DropBox_SublimeText.jpg"></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/0aBpW07Gu9U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/05/dropbox-git-sublime-text-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theme Switcher – free extension for Photoshop</title>
		<link>http://www.davidebarranca.com/2013/04/theme-switcher-free-extension-for-photoshop/</link>
		<comments>http://www.davidebarranca.com/2013/04/theme-switcher-free-extension-for-photoshop/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:52:04 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Extensions and Scripts]]></category>
		<category><![CDATA[Theme Switcher]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Photoshop @en]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1958</guid>
		<description><![CDATA[Theme Switcher is a free Photoshop panel that gives you a handy way to switch Theme (i.e. the user interface color: Original, Light Gray, Medium Gray and Dark Gray) in a click - no need to bother with Preferences anymore!]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="about" itemscope="" itemtype="http://schema.org/SoftwareApplication">It&#8217;s now available through <a itemprop="url" title="Adobe Exchange" href="www.adobeexchange.com" target="_blank">Adobe Exchange</a> my latest, and most minimal so far, <span itemprop="offers" itemscope="" itemtype="http://schema.org/Offer"><span itemprop="price">free</span></span> <span itemprop="applicationCategory">extension</span> for <span itemprop="applicationSuite">Photoshop</span> called <span itemprop="name">Theme Switcher</span>. It simply lets you pick up the <span itemprop="mentions">GUI</span> Theme (that is: the Photoshop <em><span itemprop="mentions">interface color</span></em>, which since CS6 goes from Original to Light Gray, Medium Gray and Dark Gray) with one click &#8211; handy little panel that eliminates the need to dig into the Preferences.<span id="more-1958"></span></span></p>
<p><span itemprop="about" itemscope="" itemtype="http://schema.org/SoftwareApplication">Please find the <a itemprop="url" title="Theme Switcher on Adobe Exchange" href="http://adobeexchange.com/store/products/919#.UXZ3eyuG3pg" target="_blank">Exchange page here</a> and the product page on my commercial website <a title="Theme Switcher on cs-extensions.com" href="http://www.cs-extensions.com/theme-switcher/ ‎" target="_blank">CS-Extensions</a>. If you happen to like it, please leave a review or some stars along your way!<br />
<meta itemprop="thumbnailUrl" content="http://www.davidebarranca.com/wp-content/uploads/2013/04/Featured-150x123.png" /><br />
<img class="aligncenter size-full wp-image-1961" itemprop="screenshot" alt="Theme Switcher PS" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/ThemeSwitcher_PS.jpg" width="570" height="567" /></span></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/ZkMOBSyahog" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/04/theme-switcher-free-extension-for-photoshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dan Margulis’ Modern Photoshop Color Workflow, beta-readers interview</title>
		<link>http://www.davidebarranca.com/2013/04/dan-margulis-modern-color-workflow-book-interview/</link>
		<comments>http://www.davidebarranca.com/2013/04/dan-margulis-modern-color-workflow-book-interview/#comments</comments>
		<pubDate>Wed, 03 Apr 2013 20:32:02 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[beta-reader]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[Dan Margulis]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[Modern Photoshop Color Workflow]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1920</guid>
		<description><![CDATA[Color Correction Maestro Dan Margulis has just published a new book about his latest research, appropriately called "Modern Photoshop Color Workflow - The Quartertone Quandary, the PPW, and Other Ideas for Speedy Image Enhancement". I've asked to three beta-readers, who happens to be among my best friends and experienced colleagues, few questions about the book's topics. Read along, I've a special guest too!]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="about" itemscope itemtype="http://schema.org/Book"><span itemprop="about">Color Correction</span> Maestro <span itemprop="author">Dan Margulis</span> has just published a new book about his latest research, titled <span itemprop="name">&#8220;Modern Photoshop Color Workflow &#8211; The Quartertone Quandary, the PPW, and Other Ideas for Speedy Image Enhancement&#8221;</span>.<meta itemprop="thumbnailUrl" content="http://www.davidebarranca.com/wp-content/uploads/2013/04/ModernPhotoshopColorWorkflow_cover-150x188.jpg"/><meta itemprop="datePublished" content="2013-03-25"/></p>
<p>Waiting for it to be shipped in my country too (it&#8217;s for sale on <a title="Modern Photoshop Color Workflow on Amazon.com " href="http://www.amazon.com/Modern-Photoshop-Color-Workflow-Quartertone/dp/0988280809" target="_blank">Amazon.com</a> priced for a limited time <span itemprop="offers" itemscope itemtype="http://schema.org/Offer"><span itemprop="price">64.95 USD<meta itemprop="priceCurrency" content="USD" /></span></span>, and with a well deserved <span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">average customer review rating of <span itemprop="ratingValue">5</span> stars</span>) I&#8217;ve asked to three beta-readers, who happens to be among my best friends and experienced colleagues, few questions about the book&#8217;s topics. Read along, I&#8217;ve a special guest too!<span id="more-1920"></span></p>
<h2>The Book</h2>
<p>As it is in his style &#8211; and this one is no exception &#8211; Dan&#8217;s books have two apparently conflicting characteristics:</p>
<ol>
<li>They&#8217;re somehow timeless: Dan teaches concepts first, then he elaborates the techniques exploiting them.</li>
<li>They&#8217;re deeply rooted in the years they&#8217;re published in: for instance, if early books were mostly CMYK oriented, a mixed approach has been adopted lately, when the consumer digital devices market changed the business.</li>
</ol>
<p>So to speak, <em>the times, they are a-changing…</em> and Modern Photoshop Color Workflow shows their evolution &#8211; targeting professionals&#8217; need of impressive results in a fraction of the time (which equals a fraction of the money) that was the norm in the past. The fact that, in order to learn speed, you&#8217;ve got to go through 450 pages of dense writing should suggest that the theory is quite structured. Nevertheless, the effort is well rewarded.</p>
<p><a href="http://www.davidebarranca.com/wp-content/uploads/2013/04/ModernPhotoshopColorWorkflow_spread.jpg"><img class="aligncenter size-full wp-image-1924" alt="Modern Photoshop Color Workflow cover spread" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/ModernPhotoshopColorWorkflow_spread.jpg" width="1200" height="700" itemprop="image"/></a></p>
<p>The <a title="Modern Photoshop Color Workflow official website" href="http://www.moderncolorworkflow.com" target="_blank" itemprop="url">book website</a> is now online, with tons of free learning resources such as videos and articles. Dan&#8217;s driven the development of a dedicated <a title="PPW Panel" href="http://www.ledet.com/margulis/ppw" target="_blank">Photoshop PPW panel</a> (Picture Postcard Workflow) too, which is available for free, that multiply your control over the workflow and makes it even more powerful.</span></p>
<h2>The Beta-Readers</h2>
<p>Dan&#8217;s been <em>using</em> beta-readers &#8211; i.e. a small group, about ten people strong, which is asked to read and comment the book as the author writes (and possibly re-write) it. Among the people who volunteered from all over the world, four italians were deeply involved in the project:</p>
<ul>
<li><span itemprop="contributor" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Giuliana Abbiati</span></span> [codename: <strong>GA</strong>, PPW panel software architect]. <a href="http://www.cromaline.net" target="_blank" itemprop="url">Creative mind</a>, Photoshop extensions coder.</li>
<li><span itemprop="contributor" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Alessandro Bernardi</span> [codename: <strong>AB</strong>, beta-reader] Professional retoucher/colorist, founder of the <a href="http://www.psschool.it" target="_blank" itemprop="url">PS-School</a> project</span>, which manages Dan Margulis classes in Italy.</li>
<li><span itemprop="contributor" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Daniele Di Stanio</span> [codename: <strong>DDS</strong>, coordinator]. Professional teacher and founder of <a href="http://www.alberodelcolore.com" target="_blank" itemprop="url">Albero del Colore</a>, a unique web-based learning experience of comparative color correction challenges.</span></li>
<li><span itemprop="contributor" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Marco Olivotto</span> [codename: <strong>MO</strong>, beta-reader]. Professional teacher and founder of the <a href="http://www.colorcorrectioncampus.com" target="_blank" itemprop="url">Color Correction Campus</a> project</span>, ACT-like classes in Italy.</li>
</ul>
<h2>Interviews</h2>
<p>Due to work commitments she&#8217;s been engaged into, Giuliana couldn&#8217;t join the interview &#8211; but I plan to ask her questions on a dedicated blogpost when she&#8217;ll be back.</p>
<h3>PPW Evolution</h3>
<p><strong>DB: I&#8217;ve bought my first Margulis&#8217; &#8220;Professional Photoshop&#8221; book in the year 2000 and I&#8217;ve followed him ever since, so I&#8217;ve a pretty decent grasp on how much, and in which direction, Dan&#8217;s techniques have evolved over time. To my eyes, it looks like this latest workflow marks both a discontinuity from the past and makes a good point being &#8220;fit&#8221; &#8211; if I may use this darwinian terminology &#8211; in our times: that&#8217;s probably because the image business, and as a consequence our jobs, have changed dramatically in few years. Could you tell us how Dan has shaped, refined, and systematized it since you&#8217;ve heard about it first?</strong></p>
<p><strong>AB:</strong> Well, you’d surprised, but I often use a gastronomic example to explain the PPW because it’s like cooking a good recipe. Let’s say that you want to prepare a simple dish like “pasta alla carbonara”. Usually you start with very basic steps. The first ones are very important and will decide the success of your final dish. I mean that if you put the olive oil and then you burn too much the bacon, then your pasta will be too much “alla carbonara” and won’t be good. But also the middle steps are very important and so on.</p>
<p><img class="alignleft size-full wp-image-1928" alt="Alessandro Bernardi" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/AB.jpg" width="214" height="300" />We have learned in Dan’s classes, many “cooking” techniques, but when you have to correct an image, that is the moment in which you have to take some decisions. You must decide how much contrast, how much color or sharpening you want to add to an image, and the way you cook and mix all these ingredients can lead to a success or a failure.</p>
<p>Here comes the first key word: the <em>workflow</em>. My first impact with the Picture Postcard Workflow was in November 2007, in Dan’s Advanced class in Toronto. I had already attended his regular class in March, and Dan had presented the <span itemprop="mentions">PPW</span> in his first shape at Photoshop World one month later, in April. So, we were the first group of students that had the opportunity to test the workflow during the class. I was prepared to learn many new techniques, but when Dan showed the PPW in its first version, I was surprised to see how quickly he took all the critical decisions about luminosity and color that produced a good image in few minutes.</p>
<p>The secret behind was the workflow: he had summarized all his knowledge and techniques in an effective workflow to allow good results in a matter of minutes. We began to experiment with the first PPW and the final results were pretty good, compared to the traditional workflows.</p>
<p>The idea of splitting all the steps in three main ones (eliminating the color problems, optimizing luminosity and contrast, boosting colors) is simple, and simple ideas work in almost all cases. Once you have solved color issues, think of how liberating is to work on luminosity and contrast. You can concentrate only on that and decide better how to optimize them. And then the final touch, the color boost. And it was only the beginning.</p>
<p>On my personal side I had the opportunity to see how the PPW evolved during the years as I have arranged all Dan’s classes here in Italy from 2009. So I’ve seen how it was introduced in his regular classes and how was taught in the advanced ones as well. In 2009 the workflow was already improved and some steps were revised to improve both speed and quality. After only one year, in 2010, we recorded what is currently <a title="PPW Video" href="http://www.psschool.it/picture_postcard_workflow.php" target="_blank">the most complete video resource about the PPW</a>. While we were taping I saw that the workflow was improved again, introducing some actions to speed up steps like the Color Boost and the Sharpening. After that came one of the most important additions: the <span itemprop="mentions">Man from Mars</span> technique became “Modern” as it was done through a simple action that required a rough selection to guide Photoshop for introducing color variation.</p>
<p>Then the Skin Desaturation action was added to pre-desaturate images featuring faces and Dan’s attention moved on other aspects like the False Profile and, later, the Hemholtz Kohlrausch effect.</p>
<p>This leads to the second key word: <em>evolution</em>. Thanks to Dan’s luminous mind and experimentation, and to the students’ feedbacks, the workflow was evolving. At that point was clear that having all these cooking, er, enhancing techniques inside the workflow required a better kind of automation. Dan had already started to work on a panel to put together all the actions. But I’m proud to say that it was during his first Italian advanced class, that what we call now the “PPW Team” came into the light.</p>
<p><img class="alignright size-medium wp-image-1931" alt="PPW panel V3" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/PPW_panel_v3_final-206x300.jpg" width="206" height="300" />Giuliana Abbiati was involved in programming a <span itemprop="mentions"><a href="http://www.ledet.com/margulis/ppw" itemprop="url">PPW panel</a></span> and we worked hardly on the layout to build a flexible and comfortable tool that could speed up the entire workflow and make it more reliable. We decided to put all the documentation written by Dan inside the panel and put also some additional articles written by me and one of the best Italian color correction teachers, aka Marco Olivotto. And even the panel had evolved, thanks to Giuliana’s constant efforts. She introduced scripting through which the panel can intelligently recognize the color profile of your image when you apply the false Profile technique, not to talk about the options that expand the possibilities of the Bigger Hammer, Modern Man from Mars, Color Boost and Sharpening actions. Now I would say that the PPW would not be the same without this panel, but the panel won’t be as it is without Dan’s improvements to the workflow.</p>
<p>And what about the workflow itself? I would say that in six years the key points are still the same (three main steps) but we have more options for specific cases and the speed has been improved around 40%, not to talk about the flexibility. This fits much better the current market’s needing, that is speed, quality and reliable results. Dan’s current approach has changed accordingly, moving from spending a lot of time on a single correction, to making different versions of the same image in the same amount of time, and blend their best part together.</p>
<p>This was not possible in 2007 when PPW was born, as all the techniques had to be made by hand. But now, with the power of automation and a fully tested workflow, it’s feasible and can give impressive, though unpredicted, results.</p>
<h3>Teaching the Workflow</h3>
<p><strong>DB: Color correction has always implied a broad knowledge of principles and techniques, which experience reinforces. Yet, if you see Dan working with the PPW panel, it looks like a fast and apparently effortless process. Since you&#8217;ve been teaching the PPW in your own advanced classes, what are the pitfalls from the educator&#8217;s point of view? How have you managed to pass the workflow&#8217;s concepts to your students effectively?</strong></p>
<p><strong>MO:</strong> Short reply: I hope my efforts were effective, but I must say it&#8217;s not as easy as it may seem.</p>
<p>More in detail, I&#8217;ve had three different approaches: a rather formal one, in a <a title="Marco Olivotto - Teacher In a Box video" href="http://www.teacher-in-a-box.it/videocorsi/photoshop-correzione-colore-estrema-per-fotografie-ad-alto-impatto-visivo_210.html" target="_blank">video-course</a>, where techniques must be made very clear to a potentially dishomogeneous audience; a rather &#8220;idealistic&#8221; one, in the class, where I may easily see if people are following or not, but usally attempt to deliver the philosophy of the workflow rather than every detail of the technique; finally, an informal approach, in workshops, where I have two to four hours to explain what the whole thing is about and show some examples.</p>
<p><img class="alignright size-medium wp-image-1935" alt="Marco Olivotto" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/MarcoOlivotto-300x255.jpg" width="300" height="255" />Let me start from the bottom, i.e. workshops. The first time I attempted to explain the PPW in such a situation I failed flat. It was my fault &#8211; I had 90 minutes and that wasn&#8217;t even enough to scratch the surface. Moreover, it was at an exhibition, and these are known for utter chaos and a necessity to be quick and entertaining. I later discovered that I could throw together some decent ideas in a couple of hours, and finally settled on the fact that four hours are enough to cover the workflow in detail. What level of detail strictly depends on who is listening, though. In classes it&#8217;s easier: the people who attend already know the basics of color correction and can therefore can grasp ideas quickly. To me, the core of the PPW is perception: I try to always keep that light on when I explain things, because less experienced practitioners may think that the Helmholtz-Kohlrausch effect is a commodity rather than something intrinsic to our vision. All in all, the feedback has been good, so far. Finally, video-course: nobody ever complained, and the approach was not to do a set of images from start to finish, individually, but go through four images together, side by side and step by step. I thought that this approach might easily show when something is needed and when something is not needed at all.</p>
<p>It must also be said that the PPW is highly volatile and somewhat dangerous, in general. It is a short workflow, but it takes time to see through it. I recently launched a small contest on facebook, and about 30 different versions of the same picture arrived. I think at least 15 of them, maybe more, either went through the PPW or something which seriously attempted to mime it. My own version, done in about five minutes, was better than most but definitely worse than at least two made by students of mine. The basic difference was that they cobbled together a way to get better luminosity than mine, and there was no discussion in the end: their approach was better. In this sense, PPW is very democratic: if someone finds a way to correctly enhance an important aspect of the picture and others won&#8217;t, his chances of winning in a comparison go skyrocketing.</p>
<h3>The PPW from the user&#8217;s POV</h3>
<p><strong>DB: The book thoroughly describes each step of a workflow that can branches into several sub-strategies, and Dan&#8217;s worked hard to systematize the PPW up to a great extent. What is, in your opinion, the degree of freedom that a retoucher using the PPW has? Color correction challenges you&#8217;re leading on <a title="Albero Del Colore" href="http://www.alberodelcolore.com" target="_blank">your website</a> expose you to a large amount of versions of the same image made by different operators; from this peculiar position, what are as a teacher your suggestions to really master the PPW?</strong></p>
<p><strong>DDS:</strong> Ciao Davide, and many greetings to your reader, it is a pleasure for me to be a guest in not-another-news-blog, but a website that goes in-depth and try to analyze what is around us. My experience as a color correction teacher is telling me that we have a big issue here.</p>
<p>Let me explain, first, that the word &#8220;freedom&#8221; that is a good word in every professional field is not something you can easily use in same sentence with &#8220;<em>workflow</em>&#8220;. A workflow, is a series of steps that we code to avoid over-thinking, to cut out mistakes or just to save time. So how can we have a workflow that grants us freedom? The answer is surprisingly easy, and as a teacher I&#8217;m just delighted Dan chose this way. The PPW entrusts the user to make the right calls, at the right time, on the right images. Of course we can now see, also, the major drawback. Uneducated users will produce poor results. Also we should split our professional field in two areas, users who already know Margulis methods, and all others. Let&#8217;s not be worried with the first, let&#8217;s focus on the latter category.</p>
<p>Our world is ruled by usually wrong ideas about Photoshop, and how to use it. But we need to be fair and understand that 100% users today starts learning it on web. Youtube videos, text and images tutorials. But teaching is a complicated matter, so large efforts are wasted on explain tools buttons, and showing where these tools are. But (at first) users grow their Photoshop culture like this, someone tells them where tools are, how to use it and what they do. But no one is telling me <em>when</em> they should use these or on what images (or why). And let&#8217;s not be mistaken, even this is already a huge effort for users, many of which are (for example) photographers that should be outside shooting.</p>
<p style="text-align: center;"><img class="size-full wp-image-1927 aligncenter" alt="Daniele Di Stanio" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/DDS.jpg" width="1024" height="683" /></p>
<p>Now imagine what happens when these users meet the PPW. At first they are lost. They are overwhelmed by possibilities, by the numbers of tools. Also, we&#8217;re talking about new users who are not so strong in image evaluation, so they will probably fail in choosing the correct approach many times. But this, this right here, is where the PPW really shines. And this is the reason why I think that Mr. Margulis invented something that no one ever did in the technique history.</p>
<p>This is not (in my humble opinion) a workflow. This is a <em>workflow&#8217;s framework</em>. Dan built a subset of tools and instruments, and arranged them in a &#8220;progressive&#8221; way. All of this, more, is built on a software like Photoshop, that allows professional to work with degrees of freedom you can&#8217;t find anywhere else. Extremely beautiful, and very dangerous. I spent several months researching about how to teach the PPW. Not an easy matter, but I found just the best recipe. And it was so simple, I&#8217;m now feeling really stupid. Me and you, Davide, had the chance in seeing Dan start teaching PPW, it was 2009, and it was a stripped down version, it was the foundation of what it is today. Then we saw Dan adding tools, and refining procedures, and let me say we also saw Dan adapting everything to the latests technologies. I will start recording my videos that teaches PPW in the coming weeks, and my approach, the only sensible to me as of now (please note I&#8217;m talking about teaching to students that never heard about PPW) is to split my lessons in three categories, where in the first you get the core training, few essentials procedures. And built on top of that in the following two sessions, adding tools, degrees of freedom, choices and mistakes. And you can see my answer is complex like PPW, a workflow, well to me a workflow&#8217;s framework, that will allow each and every professional to adapt it to their own work, not the opposite we see every day.</p>
<h3>New Frontiers</h3>
<p><strong>Dan&#8217;s been putting great effort constantly fine-tuning the workflow, and the Modern Color Workflow book will probably become a new standard in the field. Where do you think color correction research should point to, now? What&#8217;s the topic that interests you the most, given the PPW as the starting point?</strong></p>
<p><strong>AB:</strong> This kind of question is always difficult to answer as we don’t know how the market will evolve in the next years, and how fast. From my point of view I see two main areas in which I’ll try to invest my time and experimentation on color correction.</p>
<p>The first comes from my current specific field (retouch for advertising and fashion) and is creative color. What I think is one of the biggest Dan’s teachings is the way of controling images through the numbers, beyond the thought that is behind his techniques.</p>
<p>The advantage of having a full workflow like the PPW with so many automated steps, gives me the chance to experiment with only one or few steps to get creative results. For example, using the Bigger Hammer without doing it manually, can lead to some unconventional results on portraits. And with so many options available in the panel, I can concentrate on the final result and do my experiments very quickly.</p>
<p>Or, instead, think about the MMM action. We normally uses it to introduce color variation and make images more pleasant. But if you know how to use it, you can try the MMM on some “finished” images intentionally to introduce color shifts. This kind of results can be suitable for the creative market in which conventional colors are sacrificed in favor of the client’s personal taste to have particular color looks. Is what I call “Creative MMM” and thanks to Dan, we have now a dedicated video on the <a title="Modern Photoshop Color Workflow" href="http://www.moderncolorworkflow.com" target="_blank">book’s website</a>.</p>
<p><img class="aligncenter size-full wp-image-1934" alt="Alessandro Bernardi &amp; Dan Margulis" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/AlessandroBernardi_DanMargulis.jpg" width="1024" height="680" /></p>
<p>The second area is one in which I’m currently investing the biggest amount of time: color correction for video. Now that Photoshop allows to manage decently video files, I can use some of Dan’s techniques for correcting colors in videos. It’s not so easy to realize and you must find some workarounds to make them suitable for videos, but it can produce stunning results. Enhancing a video through the use of channels, or some adjustment layers in combination with blending modes and smart filters is amazing and fascinating at the same time. And the nice thing is that you can integrate the possibilities offered by the PPW in Photoshop with the typical editing softwares like Adobe Premiere and After Effects.</p>
<p>That’s why I think that the key word in the next years will be “integration”. Who knows, maybe in the near future we’ll be able to have a version of the PPW suitable for videos with a panel like the current one that could be switched to video mode.</p>
<p>But without Dan’s techniques this could have never been possible to me. And, definitely, <em>this</em> is the most important key point.</p>
<hr />
<p><strong>DDS:</strong> You&#8217;re not going to like my answer. I think our major shift in these last years, is that we&#8217;re struggling to understand exactly <em>how</em> our images are built or composed.</p>
<p>The hardware&#8217;s processes are a bit out of hands, and RAW processors are forcing us to steep learning curve. We can say that our world is getting quite complicate out of Photoshop, something I think we were not needing. I sometimes ask myself if there is more to research on color correction, not an answer I found, yet. Studying with Dan shifted many things, I started researching on perception, for example. But I also found out that many times what we need is not really something entirely new, but to be able to define, or to find a name, for something already exists.</p>
<p><img class="size-medium wp-image-1936 alignleft" alt="Daniele Di Stanio" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/DanieleDiStanio-204x300.jpg" width="204" height="300" />As a collective I think the best way to move forward is to take several steps backwards. To drop for good the &#8220;tutorial&#8221; way, if it is not carefully inserted in a honest context. To stop believing everyone can be a teacher.</p>
<p>We&#8217;re blessed to live an era where Masters are still here, and still working for us, with us. I foresee the real direction for PPW, though, will not be pursued as a collective, but as singles. We have all the tools, and we have the chance to make those ours. As teachers the real challenge we&#8217;re up to is to successfully teach PPW. Something that happens, to me, not when the user understood all steps and is able to repeat those, but when feels confident in changing, experimenting and move the PPW forward to new directions. Thank you Davide. And many thanks to Dan Margulis that is, and will always be, my Maestro.</p>
<hr />
<p><strong>MO:</strong> I think I understand about the future of color correction as much as I understand about women; that is, next to nothing.</p>
<p>Seriously? The push is towards a fast workflow: with few notable exceptions, the time when one could spend 30 or 40 minutes per image are gone. Entire fields of photography rely on software like Lightroom, which is fine, but it has no layers, which makes it a completely different universe from the one I am used to live in. Add to it that some visible personalities are seemingly preaching that the only button missing in ACR is a large red thing labeled &#8220;PRINT!!!&#8221;, and you have the raw picture (sorry for the pun). I wonder if they ever realized how ridiculously bad the ACR preview can be (question: can one <em>really</em> sharpen in ACR? evaluate banding? subtle color changes?), but that&#8217;s it.</p>
<p><img class="aligncenter size-full wp-image-1942" alt="Marco Olivotto, Giuliana Abbiati, Dan Margulis" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/GA_MO_DB1.jpg" width="570" height="314" /></p>
<p>A few things I&#8217;d love to see in Photoshop could possibly jeopardize some of the steps in the PPW, but I guess the PPW is more a philosophy than a settled bunch of advanced techniques: the proof of this is that some (possible) steps were almost completely erased, like Multiply in Lab (which I liked a lot, by the way). Overlay in Lab is off, Man from Mars has evolved in a totally different direction than the original&#8230; so, who can say where it may go?</p>
<p>I can tell you what I would love to see in Photoshop CS-whatever, with whatever &gt; 6, but I think this is going to remain a dream:</p>
<ul>
<li>Better blurring algorithms, able to catch the borders of an object without being as clumsy as Surface Blur.</li>
<li>A revamped approach towards Unsharp Mask.</li>
<li>The ability to actually edit whatever color profile, 3D LUT&#8217;s included.</li>
<li>Better tools for local contrast: there is a huge literature out there, and seemingly someone is inventing something new everyday, but these tools never seem to get in the right place (but they may appear in ACR &#8211; guess why?)</li>
<li>Better demosaicing algorithms in ACR.</li>
<li>Some serious noise reduction.</li>
</ul>
<p>As far as I am concerned, 3D and the Timeline are more than enough as they are, thank you. When I think of the possibility that in the next release someone may decide to add the opportunity to uhm, hey!, edit CSS natively in Photoshop, my gut reaction is to play &#8220;Radio Clash&#8221; at outrageously loud volume, and cry like a baby at the immortal verse: &#8220;Please save US, not the whales!&#8221;</p>
<h2>A Very Special Guest</h2>
<p>I&#8217;ve reached <span itemprop="contributor" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Dan Margulis</span><meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/04/DanMargulis-241x300.jpg"></span> few days before the book pressrun, and he&#8217;s been so kind (which is not a surprise at all) to answer my question too. Codename: <strong>DM</strong>.</p>
<p><strong><img class="alignright" alt="Dan Margulis" src="http://www.davidebarranca.com/wp-content/uploads/2013/04/DanMargulis-241x300.jpg" width="241" height="300" />DB: Over the years the techniques you&#8217;ve been advocating have evolved, because the (shared) knowledge in the color correction field has progressed. What looks bizarre to my eyes is that the PPW, as the latest application of a constantly advancing theory, makes use of tools (False profiles, Lab, masks, blending modes, etc.) that were available since Photoshop CS, i.e. 10 years ago. Of course we now use them in a modern way. Technologically speaking, the only real new, distinctive PPW tool (that fully exploit its power) is the panel &#8211; that is a tool that somehow you&#8217;ve built yourself &#8211; with Giuliana&#8217;s help. That&#8217;s paradoxical in my opinion. Image processing technology has evolved too, and at a high pace &#8211; but somehow these two lines didn&#8217;t cross too much (or not at all? May one provocatively state that Color Correction has progressed in spite of, and not thanks to, technology?). How is it, in your opinion &#8211; if you agree to some extent with the above? What should we look at now, as a generation of people willing to contribute to the evolution of the applied color theory?</strong></p>
<p><strong>DM:</strong> One can provocatively state that Berlusconi should be the next pope, or whatever else one likes. However, both propositions are equally invalid.</p>
<p>It&#8217;s true that Photoshop has stagnated. The development of hardware has not, and that has made all the difference. I don&#8217;t have the price lists for 10 and 15 years ago, but for the book I looked at 18 years ago. At that time, RAM was 5.000 times as expensive as today. This was a bargain compared to hard disks, which were 10,000 times as expensive. I can&#8217;t figure out the difference in computing speed, but it&#8217;s at least 500x and maybe 1000x.</p>
<p>Something like the PPW sharpening action couldn&#8217;t possibly have run under these circumstances. First, we would not have the scratch space it requires, and second it would take an hour or so to sharpen a single image.</p>
<p>Similarly, the signature move of the PPW, the MMM action, makes use of a command that nobody has heard of, Equalize. People haven&#8217;t heard of even though it has existed for more than 20 years, because in the early 1990s experts like myself dismissed it as useless. And we were right&#8211;it <em>was</em> useless at that time, because to get any benefit requires a complicated procedure that would have brought computers of that time to their knees.</p>
<p>But probably the major impact of technology is communications. Without google, and without the means of transmitting large pictures cheaply, the development of knowledge is deterred because people interested in the subject can&#8217;t find and share information conveniently. My last three books were immeasurably better than anything previously because they were supported by international groups of beta readers. It wasn&#8217;t possible ten years ago, and my earlier books were published with many misconceptions for want of adequate feedback.</p>
<p>You yourself represent the new order. Your ideas are out there for people to look at, discuss, and improve. It&#8217;s easier than ever for users to reject vendor hype and find their own best solutions. So I expect that the field will continue to evolve rapidly, and I hope you will be one of the big reasons!</p>
<p><em>[Thank so much to all the friends that made this possible! Dan's picture is © J.Scarponi]</em></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/oxZDLy5gHIE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/04/dan-margulis-modern-color-workflow-book-interview/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Parametric Curves free script User Guide</title>
		<link>http://www.davidebarranca.com/2013/03/parametric-curves-script-for-photoshop-user-guide/</link>
		<comments>http://www.davidebarranca.com/2013/03/parametric-curves-script-for-photoshop-user-guide/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 20:07:18 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Extensions and Scripts]]></category>
		<category><![CDATA[Parametric Curves]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Adobe Exchange]]></category>
		<category><![CDATA[Gradient]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1868</guid>
		<description><![CDATA[Parametric Curves is a free Photoshop script that lets you plot mathematically defined (Javascript) Curves Adjustment layers. Here I'll show you the script interface and I'll walk you through the creation of some interesting Curves, that will be the building blocks of advanced creative manipulations.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><div itemprop="about" itemscope itemtype="http://schema.org/SoftwareApplication"><span itemprop="description"><span itemprop="name">Parametric Curves</span> is a free <span itemprop="applicationCategory">Photoshop script</span> that lets you plot mathematically defined (Javascript) Curves Adjustment layers.</span> If you wonder what they could be for, please read my previous post called <a title="Gradients and Parametric Curves in Photoshop" href="http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/" target="_blank">&#8220;Gradients and Parametric Curves in Photoshop&#8221;</a>.</p>
<p>Here I&#8217;ll show you the script interface and I&#8217;ll walk you through the creation of some interesting Curves, that will be the building blocks of advanced creative manipulations.</p>
<p><span id="more-1868"></span></p>
<h2>Where do I get it?</h2>
<p><a href="https://www.adobeexchange.com" target="_blank"><img class="alignright size-full wp-image-1877" alt="Adobe Exchange" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Exchange.png" width="128" height="128" /></a>Parametric Curves is available for <strong><span itemprop="applicationSuite">Photoshop CS6</span> (Mac/Win)</strong> through <a title="Adobe Exchange panel" href="http://www.adobeexchange.com" target="_blank">Adobe Exchange</a> &#8211; the new in-app, app-store panel made by Adobe itself. Download and install Exchange if you don&#8217;t already have it, then browse the <strong>Free</strong> extensions and look for Parametric Curves there.</p>
<p>Install Parametric Curves, and find it in the Photoshop <strong>Filter menu</strong>.</p>
<h2>How does it work?</h2>
<p>When you launch it, a Curves Adjustment layer is build behind the scene and the Parametric Curves window pops up: you can either pick up a ready made function from the Presets or write your own Javascript in the text area. Click Try to preview the curve, Apply to eventually confirm.</p>
<h2>Interface</h2>
<p><img class="aligncenter size-full wp-image-1875" alt="Parametric Curves interface" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_interface.jpg" width="685" height="512" itemprop="screenshot"/></p>
<h3>1 &#8211; Curve</h3>
<p>This is where the curve is graphed. By default the orientation is <strong>Light</strong> - that is to say Black (0) is bottom-left, White (255) is top-right, which is the default of <em>RGB</em> and <em>Lab</em> modes; you can switch to <strong>Pigment / Ink %</strong> (the default for <em>Grayscale</em> and <em>CMYK,</em> White is bottom-left and Black is top-right) with the Display option drop-down menu.</p>
<h3>2 &#8211; Presets</h3>
<p><img class="alignleft size-full wp-image-1872" alt="Parametric Curves Presets" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_presets.jpg" width="237" height="289" itemprop="screenshot"/>There are some ready-made Curves you can try in the drop-down menu &#8220;Select a preset&#8230;&#8221;. When you choose one, the function is pasted in the text area (3) and the curve displayed (1).</p>
<p>You&#8217;re allowed to save your own Preset clicking the <strong>New</strong> button (you&#8217;ll be asked to enter a label for it). Add as many presets as you want &#8211; you can always delete the one you don&#8217;t like (but the Default ones) with the <strong>Remove</strong> button, or <strong>Reset</strong> them to the default group.</p>
<h3>3 &#8211; Functions</h3>
<p>In this text area you can write your own functions, or modify existing ones. Once you&#8217;re done, click the <strong>Try</strong> button in order to test it either as a graph in the Curve panel and as an actual Curves Adjustment Layer in the file.</p>
<p>4If you&#8217;re satisfied with the result, click the <strong>Apply</strong> button, otherwise you can tweak the function of <strong>Cancel</strong> back to Photoshop.</p>
<h3>4 &#8211; Information</h3>
<p>The <strong>Math Ref.</strong> button (which can be toggled on/off) shows a handy reference for the Math. Javascript Object (see below for more information):</p>
<p><img class="aligncenter size-full wp-image-1879" alt="Parametric Curves Math reference" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_interface_Math.jpg" width="884" height="512" itemprop="screenshot"/></p>
<p>The <strong>Tutorial</strong> button points your browser to the <a title="Parametric Curves category" href="http://www.davidebarranca.com/category/photoshop/extensions-and-scripts/parametric-curves/" target="_blank">Parametric Curves category page</a> of this website, while the <strong>?</strong> button shows copyright informations.</p>
<h2>Functions Tutorial</h2>
<p>This will help you starting with your own functions. Few basic information:</p>
<ul>
<li>The <strong>full range is 0-255</strong>, where Black = 0 and White = 255 (this is independent on the Display option).</li>
<li>Functions are in the form: <strong>y = f(x)</strong> and you&#8217;re supposed to write the f(x) part only: so the default Curve (a straight line 45°) is just &#8220;x&#8221;.</li>
<li>Functions value is automatically <strong>rounded</strong>.</li>
<li><strong>Javascript</strong> syntax is allowed.</li>
<li>More complete Javascript reference is <a title="Javascript Math Object Reference" href="http://www.w3schools.com/jsref/jsref_obj_math.asp" target="_blank">here</a>.</li>
</ul>
<p>I&#8217;m not very good with geometry so let&#8217;s start simple:</p>
<div id="attachment_1885" class="wp-caption aligncenter" style="width: 578px"><img class="size-full wp-image-1885" alt="Functions 1" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/functions_01.png" width="568" height="142" /><p class="wp-caption-text">x+127<br />x-127<br />2*x<br />x/2</p></div>
<p>If you need <strong>constants</strong>, they must be written as in this example: <code>Math.PI * x + Math.LN2</code>.</p>
<p>You can write <strong>functions</strong> as well of course:</p>
<div id="attachment_1886" class="wp-caption aligncenter" style="width: 578px"><img class="size-full wp-image-1886" alt="Functions 2" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/functions_02.png" width="568" height="142" /><p class="wp-caption-text">Math.pow(x,2) / 70<br />40*Math.log(x)<br />255*Math.random()<br />x+30*Math.sin(x/5)</p></div>
<p>You&#8217;d better off <strong>normalizing the output to fit the 0-255 range</strong>, as in the following examples:</p>
<div id="attachment_1890" class="wp-caption aligncenter" style="width: 578px"><img class="size-full wp-image-1890" alt="Functions 3" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/functions_03.png" width="568" height="142" /><p class="wp-caption-text">Math.sin(x)<br />127*Math.sin(x)<br />127*Math.sin(x) + 127<br />127*Math.sin(2*Math.PI*x/255) + 127</p></div>
<p>You can also use:</p>
<ul>
<li>The so-called <strong>ternary operator</strong>, in the form of <code>(condition) ? (true) : (false)</code>.</li>
<li>The <strong>modulo operator</strong> %, for instance <code>x%10</code> (which gives the rest of the division by 10 and it&#8217;s useful to repeat patterns)</li>
<li><strong>Logic operators</strong> <code>&amp;&amp;</code> (and) <code>||</code> (or), besides <code>==</code> (equal to) and <code>!=</code> (not equal to), <code>&lt;</code> and <code>&gt;</code></li>
<li>Nest them when needed, but be careful not to write bad code!</li>
</ul>
<div id="attachment_1896" class="wp-caption aligncenter" style="width: 578px"><img class="size-full wp-image-1896" alt="Functions 4" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/functions_04.png" width="568" height="142" /><p class="wp-caption-text">(x&gt;128) ? x : 255 &#8211; x<br />4 * x%256<br />(((x&gt;0) &amp;&amp; (x&lt;64)) || ((x&gt;128) &amp;&amp; (x&lt;191))) ? x : 255-x<br />x / a</p></div>
<h2>Anything a bit more inspirational on the Creative side?</h2>
<p>It&#8217;s a bottomless pit as soon as you start experimenting &#8211; please <a title="Gradients and Parametric Curves in Photoshop" href="http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/" target="_blank">see this post full of examples</a>.</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/" target="_blank"><img class="aligncenter size-full wp-image-1901" alt="Parametric Curves Funky Stuff" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurvesDesign.jpg" width="570" height="570" itemprop="image"/></a></p>
<h2>Go get it!</h2>
<p>Find it on <a title="Adobe Exchange panel" href="http://www.adobeexchange.com" target="_blank">Adobe Exchange</a>, it&#8217;s free! And if you think that after all it&#8217;s a nice piece of software, please leave a review in Exchange.</div>
<p><meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_Featured.jpg"/><br />
<meta itemprop="thumbnailUrl" content="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_Featured-150x104.jpg"></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/QVsdYRVtBLg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/03/parametric-curves-script-for-photoshop-user-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gradients and Parametric Curves in Photoshop</title>
		<link>http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/</link>
		<comments>http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 22:37:21 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Extensions and Scripts]]></category>
		<category><![CDATA[Parametric Curves]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[bump map]]></category>
		<category><![CDATA[Curves]]></category>
		<category><![CDATA[depth map]]></category>
		<category><![CDATA[displacement]]></category>
		<category><![CDATA[Gradient]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1788</guid>
		<description><![CDATA[It's fascinating the complexity of designs you can get just mixing Gradients with parametric Curves built via scripting in Photoshop - that can be used for textures, bump maps or displacement maps, abstract designs or animations.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/03/CurvesGradients.jpg"/><meta itemprop="thumbnailUrl" content="http://www.davidebarranca.com/wp-content/uploads/2013/03/CurvesGradients-150x150.jpg">I&#8217;m not a FX kind of guy, but <span itemprop="description">as a developer I&#8217;m fascinated by the astonishing complex results you can get with simple <span itemprop="name">Gradients and a Parametric Curves in Photoshop</span>. These designs can be used as building blocks for all kind of creative needs &#8211; whether bump maps, depth maps or displacement maps, abstract design, patterns, etc.</span></p>
<p><span id="more-1788"></span></p>
<h2>Parametric Curves</h2>
<p>I&#8217;ve started playing with the idea of <strong>drawing mathematically defined Curves via scripting</strong>. That is, not you adding/dragging points on a Curves window; but let ExtendScript code fetch user inputted formulas and draw the Curves accordingly. Let&#8217;s say it could be a prototype test for a future <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication"><span itemprop="name">Photoshop</span></span> panel.</p>
<p>So I&#8217;ve coded a simple <em>script</em> and, after a good dose of trial and error, I came up with some pretty interesting shapes:</p>
<div id="attachment_1792" class="wp-caption aligncenter" style="width: 552px"><img class="size-full wp-image-1792" alt="Photoshop Curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/curves.gif" width="542" height="542" /><p class="wp-caption-text">Curves (as Adjustment Layers) I&#8217;ve drawn via <strong>scripting</strong>.</p></div>
<p>Some of them may be replicable by hand (with a good dose of patience), others can be built via scripting only. These kind of curves are normally available in <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication"><a title="Filter Forge Photoshop plugin" href="http://www.filterforge.com/?affiliateid=200188983" target="_blank" itemprop="url"><span itemprop="name">Filter Forge</span></a>, a <span itemprop="description"><span itemprop="applicationSuite">Photoshop</span> plugin for texture creation</span></span> I&#8217;ve <a title="Introducing Filter Forge" href="http://www.davidebarranca.com/2013/02/introducing-filter-forge-for-photoshop/" target="_blank">enthusiastically written about here</a> &#8211; but are out of reach if you don&#8217;t own it.</p>
<h2>Gradients</h2>
<p>The above Curves have no use on real imaging but forensic and/or scientific ones (maybe &#8211; if there&#8217;s a forensic expert out there I&#8217;m all ears! The comment section is open for you), but if you put them above a <strong>Gradient adjustment layer</strong>, the fun begins. I&#8217;ll be using 16bit files (in order to avoid posterization, some of these transformations are pretty harsh), with all of the available Gradient shapes:</p>
<div id="attachment_1791" class="wp-caption aligncenter" style="width: 580px"><img class="size-full wp-image-1791" alt="Photoshop Gradients" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/gradients.png" width="570" height="114" /><p class="wp-caption-text">Available gradients in Photoshop: <strong>Linear</strong>, <strong>Reflected</strong>, <strong>Radial</strong>, <strong>Diamond</strong>, <strong>Angle</strong></p></div>
<h2>Gradient + Curves</h2>
<p>Let&#8217;s start experimenting with a <strong>mix of Curves and Gradients</strong>. Be aware that you can mix multiple <span itemprop="about">Curves</span> and <span itemprop="about">Gradients</span>, and play with Blending modes too!</p>
<h3>Linear</h3>
<p><img class="aligncenter size-full wp-image-1794" alt="Linear gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Linear.jpg" width="570" height="140" /></p>
<h3>Radial</h3>
<p><img class="aligncenter size-full wp-image-1796" alt="Radial gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Radial.jpg" width="570" height="140" /></p>
<h3>Angle</h3>
<p><img class="aligncenter size-full wp-image-1798" alt="Angle gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Angle.jpg" width="570" height="140" /></p>
<h3>Reflected</h3>
<p><img class="aligncenter size-full wp-image-1799" alt="Reflected gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Reflected.jpg" width="570" height="140" /></p>
<h3>Diamond</h3>
<p><img class="aligncenter size-full wp-image-1800" alt="Diamond gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Diamond.jpg" width="570" height="140" /></p>
<h2>Combined gradients</h2>
<p>If you start adding <strong>multiple Gradients and Curves on top of each other</strong>, you may end up with some really interesting results:</p>
<p><img class="aligncenter size-full wp-image-1802" alt="Mixed gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Mixed_01.jpg" width="570" height="570" /></p>
<p>It gets addictive when you start must I confess&#8230;</p>
<p><img class="aligncenter size-full wp-image-1803" alt="Mixed gradients and scripted curves" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Mixed_02.jpg" width="570" height="570" itemprop="image"/></p>
<h2>What for?</h2>
<p>I&#8217;m not the creative one, I&#8217;m just owning the hardware store providing you with the tools <img src='http://www.davidebarranca.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>That said, as the only untalented designer available on duty at the moment, I can show you just few examples to tease your creative skills. These are just building blocks, combining them the possibilities are endless.</p>
<h3>Patterns</h3>
<p>This is a very simple one, textured and ready to be tiled.</p>
<div id="attachment_1810" class="wp-caption aligncenter" style="width: 1010px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/Texture_example.jpg" target="_blank"><img class="size-full wp-image-1810" alt="Texture Example" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Texture_example.jpg" width="1000" height="1000" /></a><p class="wp-caption-text"><strong>A</strong>: Gradient + Curves. <strong>B</strong>: Perlin noise (Clouds) + Motion Blur. <strong>C</strong>: Perlin noise + Gaussian Noise. <strong>D</strong>: Combined result.</p></div>
<h3>Displacement maps</h3>
<p>Pretty hidden in the menu, there&#8217;s the <strong>Distort &#8211; Displace filter</strong>. It requires you to open a second image (the <em><span itemprop="mentions">Displacement Map</span></em>), to be used to distort the first one according to the parameters you&#8217;ve set.</p>
<div id="attachment_1813" class="wp-caption aligncenter" style="width: 1010px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/Displacement_example.jpg" target="_blank"><img class="size-full wp-image-1813" alt="Displacement example" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Displacement_example.jpg" width="1000" height="1000" /></a><p class="wp-caption-text"><strong>A</strong>: Gradient + Curves. <strong>B</strong>: Texture. <strong>C</strong>: Texture displaced. <strong>D</strong>: Combined result.</p></div>
<h3>3D <span itemprop="mentions">Depth Maps</span> and <span itemprop="mentions">Bump Maps</span></h3>
<p>Believe me, I rarely open any 3D panel in Photoshop because I&#8217;m a 2D chauvinist, so this one is really a basic example that may make the actual experts laugh, but it&#8217;s just to give you the idea of using gradient as Depth Maps.</p>
<div id="attachment_1818" class="wp-caption aligncenter" style="width: 1010px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/Depth_map.jpg" target="_blank"><img class="size-full wp-image-1818" alt="Depth map example" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Depth_map.jpg" width="1000" height="500" itemprop="image"/></a><p class="wp-caption-text">From the Photoshop CS6 menu<strong> 3D &#8211; New Mesh from Layer &#8211; Depth Map to &#8211; Plane</strong></p></div>
<div id="attachment_1821" class="wp-caption aligncenter" style="width: 1010px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/Displacement_example_02.jpg"><img class="size-full wp-image-1821" alt="Displacement example" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Displacement_example_02.jpg" width="1000" height="500" /></a><p class="wp-caption-text">Another couple of Depth Map examples</p></div>
<p>Similarly (but with a subtler effect) you can apply those gradients as actual Bump Maps in 3D materials.</p>
<h3>Animations</h3>
<p>All kind of weird stuff&#8230; this is just an example of what happens if you shift Gradients (on selected channels only) when one or more parametric Curves are applied. <strong>Click on the image to launch the video</strong>.</p>
<div id="attachment_1826" class="wp-caption aligncenter" style="width: 570px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/Gradient_madness.mp4" target="_blank"><img class="size-full wp-image-1826 " alt="Gradient Madness" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Movie.jpg" width="560" height="374" itemprop="image" /></a><p class="wp-caption-text">Few examples &#8211; scripting the gradient interaction would lead to even more interesting results</p></div>
<h2>Parametric Curves on Exchange!</h2>
<p><a href="https://www.adobeexchange.com" target="_blank"><img class="alignright size-full wp-image-1877" alt="Adobe Exchange" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/Exchange.png" width="128" height="128" /></a>Parametric Curves is available as a free script for <strong><span itemprop="applicationSuite">Photoshop CS6</span> (Mac/Win)</strong> through <a title="Adobe Exchange panel" href="http://www.adobeexchange.com" target="_blank">Adobe Exchange</a> &#8211; the new in-app, app-store panel made by Adobe itself. Download and install Exchange if you don&#8217;t already have it, then browse the <strong>Free</strong> extensions and look for Parametric Curves there. After the installation, please find it in the <strong>Filter</strong> menu. More <a href="http://www.davidebarranca.com/2013/03/parametric-curves-script-for-photoshop-user-guide/" title="Parametric Curves free script User Guide" target="_blank">info about the panel here</a>.<br />
<a href="http://www.davidebarranca.com/2013/03/parametric-curves-script-for-photoshop-user-guide/" title="Parametric Curves free script User Guide" target="_blank"><img class="aligncenter size-full wp-image-1879" alt="Parametric Curves Math reference" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/ParametricCurves_interface_Math.jpg" width="884" height="512" itemprop="screenshot"/></a></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/Q0bdnqklYvI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/03/gradients-and-parametric-curves-in-photoshop/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
<enclosure url="http://www.davidebarranca.com/wp-content/uploads/2013/03/Gradient_madness.mp4" length="3723168" type="video/mp4" />
		</item>
		<item>
		<title>Presets management with DropDownList and XML in ExtendScript</title>
		<link>http://www.davidebarranca.com/2013/03/presets-management-with-dropdownlist-and-xml-in-extendscript/</link>
		<comments>http://www.davidebarranca.com/2013/03/presets-management-with-dropdownlist-and-xml-in-extendscript/#comments</comments>
		<pubDate>Sat, 02 Mar 2013 22:06:46 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[CoffeeScript]]></category>
		<category><![CDATA[dropdownlist]]></category>
		<category><![CDATA[Extendscript]]></category>
		<category><![CDATA[presets]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1763</guid>
		<description><![CDATA[When scripting for the Creative Suite it may be handy to setup a Preset system, in order to allow users save and retrieve their own preferred configurations easily. In this tutorial I'll show you how to implement Presets with a DropDownList menu based upon XML data.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="description">ScriptUI windows can contain several controls (checkboxes, sliders, etc), and to setup a Preset system is a very handy way to allow users save and retrieve their own preferred configurations easily. In this tutorial I&#8217;ll show you <span itemprop="name">how to implement <span itemprop="about">Presets</span> with a DropDownList menu based upon XML data</span>.</span><span id="more-1763"></span></p>
<p><img class="aligncenter size-full wp-image-1772" alt="XML DropDownList Preset demo" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/XML_DropDownList_Preset_demo.jpg" width="524" height="346" itemprop="image"/></p>
<h2>Starting point</h2>
<p>I&#8217;ve set up a simple demo dialog using a resource string &#8211; you can use it either in <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication">InDesign</span> or <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication">Photoshop</span> for instance: this is the <strong>base</strong> which I&#8217;ll be using throughout the post <strong>adding functional bits of code</strong>. (I&#8217;ve used <a title="CoffeeScript" href="http://www.coffeescript.org" target="_blank">CoffeeScript</a>, a nice language that compiles to JavaScript, to write the whole script; in this tutorial I&#8217;m going to show the JS only, but you can find the entire <span itemprop="mentions" itemscope itemtype="http://schema.org/SoftwareApplication">CoffeScript</span> code at the bottom of the page if you&#8217;re curious).</p><pre class="crayon-plain-tag">#target photoshop;

var win, windowResource;

windowResource = "dialog {  \
    orientation: 'column', \
    alignChildren: ['fill', 'top'],  \
    size:[410, 210], \
    text: 'XML DropDownList Presets demo - www.davidebarranca.com',  \
    margins:15, \
    \
    controlsPanel: Panel { \
        orientation: 'column', \
        alignChildren:'right', \
        margins:15, \
        text: 'Controls', \
        controlsGroup: Group {  \
        orientation: 'row', \
        alignChildren:'center', \
        st: StaticText { text: 'Amount:' }, \
        mySlider: Slider { minvalue:0, maxvalue:500, value:300, size:[220,20] }, \
        myText: EditText { text:'300', characters:5, justify:'left'} \
        } \
    }, \
    presetsPanel: Panel { \
        orientation: 'row', \
        alignChildren: 'center', \
        text: 'Presets', \
        margins: 14, \
        presetList: DropDownList {preferredSize: [163,20] }, \
        saveNewPreset: Button { text: 'New', preferredSize: [44,24]}, \
        deletePreset: Button { text: 'Remove', preferredSize: [60,24]}, \
        resetPresets: Button { text: 'Reset', preferredSize: [50,24]} \
    }, \
    buttonsGroup: Group{\
        alignChildren: 'bottom',\
        cancelButton: Button { text: 'Cancel', properties:{name:'cancel'},size: [60,24], alignment:['right', 'center'] }, \
        applyButton: Button { text: 'Apply', properties:{name:'apply'}, size: [100,24], alignment:['right', 'center'] }, \
        }\
    }";

win = new Window(windowResource);
// binds mySlider.value with myText.text
win.controlsPanel.controlsGroup.myText.onChange = function() {
  this.parent.mySlider.value = Number(this.text);
};
win.controlsPanel.controlsGroup.mySlider.onChange = function() { 
  this.parent.myText.text = Math.ceil(this.value); }; win.show();&amp;nbsp;</pre><p>This scheme lets you:</p>
<ul>
<li><strong>Save</strong> new custom presets.</li>
<li><strong>Delete</strong> custom presets.</li>
<li><strong>Reset</strong> to the default group of presets (which are <em>protected</em> and cannot be deleted).</li>
</ul>
<p>The presets are stored as <strong>XML data</strong> in a file (in the example there&#8217;s a single value only, but they can be as many as you need)</p><pre class="crayon-plain-tag">&lt;presets&gt;
  &lt;preset default="true"&gt;
    &lt;name&gt;select...&lt;/name&gt;
    &lt;value/&gt;
  &lt;/preset&gt;
  &lt;preset default="true"&gt;
    &lt;name&gt;Default value&lt;/name&gt;
    &lt;value&gt;100&lt;/value&gt;
  &lt;/preset&gt;
  &lt;preset default="true"&gt;
    &lt;name&gt;Low value&lt;/name&gt;
    &lt;value&gt;10&lt;/value&gt;
  &lt;/preset&gt;
  &lt;preset default="true"&gt;
    &lt;name&gt;High value&lt;/name&gt;
    &lt;value&gt;400&lt;/value&gt;
  &lt;/preset&gt;
&lt;/presets&gt;</pre><p>The <code>default="true"</code> attribute marks this presets as read-only (i.e. the user can&#8217;t delete them)</p>
<h2>Logic</h2>
<p>This is how I&#8217;ve decomposed the problem (click to open a bigger version)</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/03/PresetsDemoWorkflow.png" target="_blank"><img class="aligncenter size-full wp-image-1767" alt="Presets Demo Workflow" src="http://www.davidebarranca.com/wp-content/uploads/2013/03/PresetsDemoWorkflow.png" width="1430" height="654" itemprop="image"/></a></p>
<h2>Building the Presets system</h2>
<p>Basically the core is an <strong>initialization routine</strong> that reads <span itemprop="about">XML</span> data from an XML file (or creates a default one if it&#8217;s missing) and fills the <span itemprop="about">DropDownList</span> (DDL from now on) with labels, so let&#8217;s start with it.</p>
<h3>1. Initialization routine</h3>
<p>I&#8217;ve set few globals that will be useful for other functions too &#8211; the code is commented so it should be quite self-explanatory.</p><pre class="crayon-plain-tag">// the XML object holding the XML data
var xmlData = null;

// the array holding the preset labels, used later on 
// to check for label duplicates when adding a new preset
var presetNamesArray = [];

// the preset file (which lives alongside this script)
resPath = File($.fileName).parent;
var presetFile = new File("" + resPath + "/presets.xml");

// Initialization routine
var initDDL = function() {
  var i, nameListLength;

  if (!presetFile.exists) {
    createDefaultXML();
    // recursive call, needed to read and fill the DDL
    initDDL(); 
  }

  // retrieves XML Data
  xmlData = readXML();
  // empties the DDL before adding new content
  if (win.presetsPanel.presetList.items.length !== 0) {
    win.presetsPanel.presetList.removeAll();
  }

  // the number of preset labels
  nameListLength = xmlData.preset.name.length();
  presetNamesArray.length = 0;

  // for each preset XML element, retrieve the &lt;name&gt; label
  // and write it in the Labels array, then add it to the DDL
  i = 0;
  while (i &lt; nameListLength) {
    presetNamesArray.push(xmlData.preset.name[i].toString());
    win.presetsPanel.presetList.add("item", xmlData.preset.name[i]);
    i++;
  }

  // set as the default the first preset
  // which is the placeholder "select..."
  win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[0];
  return true;
};</pre><p>As you&#8217;ve seen I&#8217;ve mentioned some utility functions like <code>readXML()</code> and <code>writeXML()</code>, alongside <code>createDefaultXML()</code>, here they are:</p><pre class="crayon-plain-tag">// holds the XML object containing the 
// Default set of Presets
var defaultXML = &lt;presets&gt;
		   &lt;preset default="true"&gt;
		   &lt;name&gt;select...&lt;/name&gt;
		   &lt;value&gt;&lt;/value&gt;
	        &lt;/preset&gt;
	        &lt;preset default="true"&gt;
		   &lt;name&gt;Default value&lt;/name&gt;
		   &lt;value&gt;100&lt;/value&gt;
	        &lt;/preset&gt;
	        &lt;preset default="true"&gt;
		   &lt;name&gt;Low value&lt;/name&gt;
		   &lt;value&gt;10&lt;/value&gt;
	        &lt;/preset&gt;
	        &lt;preset default="true"&gt;
	       	   &lt;name&gt;High value&lt;/name&gt;
		   &lt;value&gt;400&lt;/value&gt;
                &lt;/preset&gt;
	     &lt;/presets&gt;;

// writes an XML object to file
writeXML = function(xml, file) {
  if (file == null) {
    // global, the preset.xml file already declared
    file = presetFile;
  }
  try {
    file.open("w");
    file.write(xml);
    file.close();
  } catch (e) {
    alert("" + e.message + "\nThere are problems writing the XML file!");
  }
  return true;
};

// reads an XML object from a file
readXML = function(file) {
  var content;
  if (file == null) {
    // global, the preset.xml file already declared
    file = presetFile;
  }
  try {
    file.open('r');
    content = file.read();
    file.close();
    return new XML(content);
  } catch (e) {
    alert("" + e.message + "\nThere are problems reading the XML file!");
  }
  return true;
};

// creates a preset.xml file
// using the default set of presets
createDefaultXML = function() {
  // global, the preset.xml file already declared
  if (!presetFile.exists) {
    writeXML(defaultXML);
    return true;
  } else {
    presetFile.remove();
    // recursive call
    createDefaultXML();
  }
  return true;
};</pre><p>So far the script detects whether a <code>preset.xml</code> file exists: if it doesn&#8217;t, it creates a default one &#8211; otherwise it reads it and use it to fill the DDL.</p>
<h3>2. Save a new preset</h3>
<p>I&#8217;ve setup the following <code>onClick()</code> function which makes use of <code>createPresetChild()</code>, another utility that grabs values from the GUI and creates a <code></code> node from them. Which node, in turn, will be appended to the existing XML data.</p><pre class="crayon-plain-tag">// used to workaround the lack of indexOf in ExtendScript
var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i &lt; l; i++) { if (i in this &amp;&amp; this[i] === item) return i; } return -1; };

// creates a XML &lt;preset&gt; node 
var createPresetChild = function(name, value) {
  var child;
  // mind you, each custom node has the default attribute
  // set to "false", meaning that it can be deleted
  return child = &lt;preset default="false"&gt;
		    &lt;name&gt;{name}&lt;/name&gt;
		    &lt;value&gt;{value}&lt;/value&gt;
		 &lt;/preset&gt;;
};

// onClick handler for the Save New Preset button
win.presetsPanel.saveNewPreset.onClick = function() {
  var child, presetName;

  // ask for a preset name
  presetName = prompt("Give your preset a name!\nYou'll find it in the preset list.", "User Preset", "Save new Preset");
  if (presetName == null) {
    return;
  }

  // in case the name already exists
  if (__indexOf.call(presetNamesArray, presetName) &gt;= 0) {
    alert("Duplicate name!\nPlease find another one.");
    // make a recursive call to this onClick function
    win.presetsPanel.saveNewPreset.onClick.call();
  }

  // creates a &lt;preset&gt; node with values grabbed 
  // from the window controls
  child = createPresetChild(presetName, win.controlsPanel.controlsGroup.myText.text);

  // appends the XML node to the existing XML data (global variable)
  xmlData.appendChild(child);

  // writes the XML object to the preset.xml file
  writeXML(xmlData);

  // you need to initialize again, in order to populate 
  // the DDL with new values
  initDDL();

  // selects the last preset in the DDL
  win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[win.presetsPanel.presetList.items.length - 1];
};</pre><p>Please notice the lack of <code>indexOf</code> in ExtendScript (the used <code>__indexOf</code> is courtesy of CoffeeScript)</p>
<h3> 3. Delete preset</h3>
<p>That&#8217;s pretty straightforward, you just need to check whether the <code>default</code> attribute of the preset is false (which means that the preset is not protected and can be deleted). Again, each preset&#8217;s modification needs to write the changes to disk in the <code>presets.xml</code> file and re-initialize the DDL in order to populate the menu properly.</p><pre class="crayon-plain-tag">// onClick handler for the Delete preset button
win.presetsPanel.deletePreset.onClick = function() {

  // mind you: typeof xmlData.preset[].@default = XML
  // the "!!" is a shorthand for Boolean()
  if (!!xmlData.preset[win.presetsPanel.presetList.selection.index].@default === true) {
    alert("Can't delete \"" + xmlData.preset[win.presetsPanel.presetList.selection.index].name + "\"\nIt's part of the default set of Presets");
    return;
  }

  // ask for confirmation
  if (confirm("Are you sure you want to delete \"" + xmlData.preset[win.presetsPanel.presetList.selection.index].name + "\" preset?\nYou can't undo this.")) {
    // delete the &lt;preset&gt; element
    delete xmlData.preset[win.presetsPanel.presetList.selection.index];
  }

  // as usual, write to disk and initialize again
  writeXML(xmlData);
  return initDDL();
};</pre><p></p>
<h3> 4. Reset presets</h3>
<p>Another easy task, just replace <code>presets.xml</code> with a default one (which is hardcoded inside the script).</p><pre class="crayon-plain-tag">// onClick handler for the Reset presets button
win.presetsPanel.resetPresets.onClick = function() {
  if (confirm("Warning\nAre you sure you want to reset the Preset list?", true)) {
    createDefaultXML();
    initDDL();
  }
};</pre><p></p>
<h3> 5. Apply preset</h3>
<p>The last thing we&#8217;ve to add is a handler for the DDL <code>onChange</code> event &#8211; that is, the user selects the preset and window controls must be updated with values coming from it.</p><pre class="crayon-plain-tag">// DDL onChange handler
win.presetsPanel.presetList.onChange = function() {
  if (this.selection !== null &amp;&amp; this.selection.index !== 0) {
    // sets GUI controls
    win.controlsPanel.controlsGroup.myText.text = xmlData.preset[this.selection.index].value;
    win.controlsPanel.controlsGroup.mySlider.value = Number(xmlData.preset[this.selection.index].value);
  }
};</pre><p></p>
<h2>Completed script</h2>
<p>Let&#8217;s put everything together! As follows both versions (JS and CoffeeScript). Speaking of the latter, XML management in ExtendScript made me use more than I wanted the backticks (which embed regular JS code), but that&#8217;s fine &#8211; I&#8217;m a big fan of CoffeeScript anyway <img src='http://www.davidebarranca.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Javascript</h3>
<p></p><pre class="crayon-plain-tag">#target photoshop;
var createDefaultXML, createPresetChild, defaultXML, initDDL, presetFile, presetNamesArray, readXML, resPath, win, windowResource, writeXML, xmlData,
  __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i &lt; l; i++) { if (i in this &amp;&amp; this[i] === item) return i; } return -1; };

windowResource = "dialog {  \
    orientation: 'column', \
    alignChildren: ['fill', 'top'],  \
    size:[410, 210], \
    text: 'DropDownList Demo - www.davidebarranca.com',  \
    margins:15, \
    \
    controlsPanel: Panel { \
        orientation: 'column', \
        alignChildren:'right', \
        margins:15, \
        text: 'Controls', \
        controlsGroup: Group {  \
            orientation: 'row', \
            alignChildren:'center', \
            st: StaticText { text: 'Amount:' }, \
            mySlider: Slider { minvalue:0, maxvalue:500, value:300, size:[220,20] }, \
            myText: EditText { text:'300', characters:5, justify:'left'} \
    	} \
    }, \
    presetsPanel: Panel { \
    	orientation: 'row', \
    	alignChildren: 'center', \
    	text: 'Presets', \
    	margins: 14, \
    	presetList: DropDownList {preferredSize: [163,20] }, \
    	saveNewPreset: Button { text: 'New', preferredSize: [44,24]}, \
    	deletePreset: Button { text: 'Remove', preferredSize: [60,24]}, \
    	resetPresets: Button { text: 'Reset', preferredSize: [50,24]} \
    }, \
    buttonsGroup: Group{\
        alignChildren: 'bottom',\
        cancelButton: Button { text: 'Cancel', properties:{name:'cancel'},size: [60,24], alignment:['right', 'center'] }, \
        applyButton: Button { text: 'Apply', properties:{name:'apply'}, size: [100,24], alignment:['right', 'center'] }, \
    }\
}";

win = new Window(windowResource);
xmlData = null;
presetNamesArray = [];
resPath = File($.fileName).parent;
presetFile = new File("" + resPath + "/presets.xml");
defaultXML = &lt;presets&gt;
		&lt;preset default="true"&gt;
			&lt;name&gt;select...&lt;/name&gt;
			&lt;value&gt;&lt;/value&gt;
		&lt;/preset&gt;
		&lt;preset default="true"&gt;
			&lt;name&gt;Default value&lt;/name&gt;
			&lt;value&gt;100&lt;/value&gt;
		&lt;/preset&gt;
		&lt;preset default="true"&gt;
			&lt;name&gt;Low value&lt;/name&gt;
			&lt;value&gt;10&lt;/value&gt;
		&lt;/preset&gt;
		&lt;preset default="true"&gt;
			&lt;name&gt;High value&lt;/name&gt;
			&lt;value&gt;400&lt;/value&gt;
		&lt;/preset&gt;
	&lt;/presets&gt;;

writeXML = function(xml, file) {
  if (file == null) {
    file = presetFile;
  }
  try {
    file.open("w");
    file.write(xml);
    file.close();
  } catch (e) {
    alert("" + e.message + "\nThere are problems writing the XML file!");
  }
  return true;
};

readXML = function(file) {
  var content;
  if (file == null) {
    file = presetFile;
  }
  try {
    file.open('r');
    content = file.read();
    file.close();
    return new XML(content);
  } catch (e) {
    alert("" + e.message + "\nThere are problems reading the XML file!");
  }
  return true;
};

createDefaultXML = function() {
  if (!presetFile.exists) {
    writeXML(defaultXML);
    void 0;
  } else {
    presetFile.remove();
    createDefaultXML();
  }
  return true;
};

createPresetChild = function(name, value) {
  var child;
  return child = &lt;preset default="false"&gt;
				&lt;name&gt;{name}&lt;/name&gt;
				&lt;value&gt;{value}&lt;/value&gt;
			&lt;/preset&gt;;
};

initDDL = function() {
  var i, nameListLength;
  if (!presetFile.exists) {
    createDefaultXML();
    initDDL();
  }
  xmlData = readXML();
  if (win.presetsPanel.presetList.items.length !== 0) {
    win.presetsPanel.presetList.removeAll();
  }
  nameListLength = xmlData.preset.name.length();
  presetNamesArray.length = 0;
  i = 0;
  while (i &lt; nameListLength) {
    presetNamesArray.push(xmlData.preset.name[i].toString());
    win.presetsPanel.presetList.add("item", xmlData.preset.name[i]);
    i++;
  }
  win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[0];
  return true;
};

win.controlsPanel.controlsGroup.myText.onChange = function() {
  return this.parent.mySlider.value = Number(this.text);
};

win.controlsPanel.controlsGroup.mySlider.onChange = function() {
  return this.parent.myText.text = Math.ceil(this.value);
};

win.presetsPanel.presetList.onChange = function() {
  if (this.selection !== null &amp;&amp; this.selection.index !== 0) {
    win.controlsPanel.controlsGroup.myText.text = xmlData.preset[this.selection.index].value;
    win.controlsPanel.controlsGroup.mySlider.value = Number(xmlData.preset[this.selection.index].value);
  }
  return true;
};

win.presetsPanel.resetPresets.onClick = function() {
  if (confirm("Warning\nAre you sure you want to reset the Preset list?", true)) {
    createDefaultXML();
    return initDDL();
  }
};

win.presetsPanel.saveNewPreset.onClick = function() {
  var child, presetName;
  presetName = prompt("Give your preset a name!\nYou'll find it in the preset list.", "User Preset", "Save new Preset");
  if (presetName == null) {
    return;
  }
  if (__indexOf.call(presetNamesArray, presetName) &gt;= 0) {
    alert("Duplicate name!\nPlease find another one.");
    win.presetsPanel.saveNewPreset.onClick.call();
  }
  child = createPresetChild(presetName, win.controlsPanel.controlsGroup.myText.text);
  xmlData.appendChild(child);
  writeXML(xmlData);
  initDDL();
  return win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[win.presetsPanel.presetList.items.length - 1];
};

win.presetsPanel.deletePreset.onClick = function() {
  if (!!xmlData.preset[win.presetsPanel.presetList.selection.index].@default === true) {
    alert("Can't delete \"" + xmlData.preset[win.presetsPanel.presetList.selection.index].name + "\"\nIt's part of the default set of Presets");
    return;
  }
  if (confirm("Are you sure you want to delete \"" + xmlData.preset[win.presetsPanel.presetList.selection.index].name + "\" preset?\nYou can't undo this.")) {
    delete xmlData.preset[win.presetsPanel.presetList.selection.index];
  }
  writeXML(xmlData);
  return initDDL();
};

initDDL();

win.show();</pre><p></p>
<h3> CoffeeScript</h3>
<p></p><pre class="crayon-plain-tag">`#target photoshop`

windowResource = "dialog {  \
    orientation: 'column', \
    alignChildren: ['fill', 'top'],  \
    size:[410, 210], \
    text: 'DropDownList Demo - www.davidebarranca.com',  \
    margins:15, \
    \
    controlsPanel: Panel { \
        orientation: 'column', \
        alignChildren:'right', \
        margins:15, \
        text: 'Controls', \
        controlsGroup: Group {  \
            orientation: 'row', \
            alignChildren:'center', \
            st: StaticText { text: 'Amount:' }, \
            mySlider: Slider { minvalue:0, maxvalue:500, value:300, size:[220,20] }, \
            myText: EditText { text:'300', characters:5, justify:'left'} \
    	} \
    }, \
    presetsPanel: Panel { \
    	orientation: 'row', \
    	alignChildren: 'center', \
    	text: 'Presets', \
    	margins: 14, \
    	presetList: DropDownList {preferredSize: [163,20] }, \
    	saveNewPreset: Button { text: 'New', preferredSize: [44,24]}, \
    	deletePreset: Button { text: 'Remove', preferredSize: [60,24]}, \
    	resetPresets: Button { text: 'Reset', preferredSize: [50,24]} \
    }, \
    buttonsGroup: Group{\
        alignChildren: 'bottom',\
        cancelButton: Button { text: 'Cancel', properties:{name:'cancel'},size: [60,24], alignment:['right', 'center'] }, \
        applyButton: Button { text: 'Apply', properties:{name:'apply'}, size: [100,24], alignment:['right', 'center'] }, \
    }\
}";

# Create Dialog
win = new Window windowResource

# globals
xmlData = null
presetNamesArray = []
resPath = File($.fileName).parent
presetFile = new File "#{resPath}/presets.xml"
defaultXML = `&lt;presets&gt;
					&lt;preset default="true"&gt;
						&lt;name&gt;select...&lt;/name&gt;
						&lt;value&gt;&lt;/value&gt;
					&lt;/preset&gt;
					&lt;preset default="true"&gt;
						&lt;name&gt;Default value&lt;/name&gt;
						&lt;value&gt;100&lt;/value&gt;
					&lt;/preset&gt;
					&lt;preset default="true"&gt;
						&lt;name&gt;Low value&lt;/name&gt;
						&lt;value&gt;10&lt;/value&gt;
					&lt;/preset&gt;
					&lt;preset default="true"&gt;
						&lt;name&gt;High value&lt;/name&gt;
						&lt;value&gt;400&lt;/value&gt;
					&lt;/preset&gt;
				&lt;/presets&gt;`

# writes an XML object to a file
writeXML = (xml, file=presetFile) -&gt;
	try
		file.open "w"
		file.write xml
		file.close()
	catch e
		alert "#{e.message}\nThere are problems writing the XML file!"
	true

# reads a file (default=presets.xml) and returns an XML object
readXML = (file=presetFile) -&gt;
	try  
		file.open 'r'
		content = file.read()
		file.close()
		return new XML content
	catch e
		alert "#{e.message}\nThere are problems reading the XML file!"
	true

# creates a Default XML file
createDefaultXML = () -&gt;
	# if file doesn't exist
	if !presetFile.exists 
		writeXML defaultXML
		undefined
	else
		presetFile.remove()
		createDefaultXML()
	true

# creates and returns an XML &lt;preset&gt; element
createPresetChild = (name, value) -&gt;
	child = `&lt;preset default="false"&gt;
				&lt;name&gt;{name}&lt;/name&gt;
				&lt;value&gt;{value}&lt;/value&gt;
			&lt;/preset&gt;`

# Initialize DropDownList
initDDL = () -&gt;
	# if file doesn't exist
	if !presetFile.exists
		createDefaultXML()
		initDDL()

	# file exists
	xmlData = readXML() 
	# clean DropDownList
	win.presetsPanel.presetList.removeAll() if win.presetsPanel.presetList.items.length isnt 0
	# how many presets?	 
	nameListLength = xmlData.preset.name.length()
	# empties the names array
	presetNamesArray.length = 0
	# fills the DDL and the presetNamesArray
	i = 0
	while i &lt; nameListLength
		# toString() otherwise its an array of XML objects!
		presetNamesArray.push xmlData.preset.name[i].toString()
		win.presetsPanel.presetList.add "item", xmlData.preset.name[i]
		i++
	win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[0]
	true

# binds mySlider.value and myText.text
win.controlsPanel.controlsGroup.myText.onChange = () -&gt;
	@parent.mySlider.value = Number @text

# binds mySlider.value and myText.text
win.controlsPanel.controlsGroup.mySlider.onChange = () -&gt;
	@parent.myText.text = Math.ceil @value

win.presetsPanel.presetList.onChange = () -&gt;
	if @selection isnt null and @selection.index isnt 0
		win.controlsPanel.controlsGroup.myText.text = xmlData.preset[@selection.index].value
		win.controlsPanel.controlsGroup.mySlider.value = Number xmlData.preset[@selection.index].value
	true

win.presetsPanel.resetPresets.onClick = () -&gt;
	if confirm "Warning\nAre you sure you want to reset the Preset list?", true
		# remove existing preset file, creates a Default XML file
		createDefaultXML()
		# refresh the DropDownList!
		initDDL()

win.presetsPanel.saveNewPreset.onClick = () -&gt;
	presetName = prompt "Give your preset a name!\nYou'll find it in the preset list.", "User Preset", "Save new Preset"
	if !presetName? then return
	if presetName in presetNamesArray
		alert "Duplicate name!\nPlease find another one."
		# recursion again?!
		win.presetsPanel.saveNewPreset.onClick.call()
	# create a &lt;preset&gt; xml child
	child = createPresetChild presetName, win.controlsPanel.controlsGroup.myText.text
	# append the child to the xmlData
	xmlData.appendChild child
	writeXML xmlData
	# re-initialize the DDL in order to make changes appear
	initDDL()
	# select the last preset
	win.presetsPanel.presetList.selection = win.presetsPanel.presetList.items[win.presetsPanel.presetList.items.length - 1]

win.presetsPanel.deletePreset.onClick = () -&gt;
	# "true" is a string in the XML, not a boolean!
	if `!!xmlData.preset[win.presetsPanel.presetList.selection.index].@default` is true
		alert "Can't delete \"#{xmlData.preset[win.presetsPanel.presetList.selection.index].name}\"\nIt's part of the default set of Presets"
		return
	if confirm "Are you sure you want to delete \"#{xmlData.preset[win.presetsPanel.presetList.selection.index].name}\" preset?\nYou can't undo this."
		`delete xmlData.preset[win.presetsPanel.presetList.selection.index]`
	writeXML xmlData
	# re-initialize the DDL in order to make changes appear
	initDDL()

# Init the DropDownList
initDDL()

# Show the window
win.show()</pre><p></p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/brQMMstivHU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/03/presets-management-with-dropdownlist-and-xml-in-extendscript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to open and retouch Hasselblad 3F scanner files in Photoshop CS6</title>
		<link>http://www.davidebarranca.com/2013/02/how-to-open-and-retouch-hasselblad-3f-scanner-files-in-photoshop-cs6/</link>
		<comments>http://www.davidebarranca.com/2013/02/how-to-open-and-retouch-hasselblad-3f-scanner-files-in-photoshop-cs6/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 23:56:00 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[3F]]></category>
		<category><![CDATA[Adobe Camera Raw]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[fff]]></category>
		<category><![CDATA[FlexColor]]></category>
		<category><![CDATA[Hasselblad]]></category>
		<category><![CDATA[Imacon]]></category>
		<category><![CDATA[Photoshop CS6]]></category>
		<category><![CDATA[scanner]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1722</guid>
		<description><![CDATA[If you try to open in Photoshop CS6 a 3F (a file with extension .fff, the raw format for Hasselblad and Imacon scanners) coming from the FlexColor software, you're going to run into troubles: here it is the workaround! And I'll show you my 3F retouching workflow.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><span itemprop="description">If you try to open in Photoshop CS6 a <span itemprop="about" itemscope="" itemtype="http://schema.org/SoftwareApplication"><meta itemprop="applicationCategory" content="photography" /><meta itemprop="downloadUrl" content="http://bigano.com/index.php/en/consulting/57-hasselblad/155-il-sistema-3f-hasselblad-flexible-file-format.html?start=9" /><span itemprop="name">3F</span> (<span itemprop="description">a file with extension .fff, the raw format for Hasselblad and Imacon scanners</span>)</span> coming from the Imacon/Hasselblad FlexColor software, you&#8217;re going to run into troubles (but there&#8217;s plenty of workarounds!)</span>:<br />
<a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/AdobeCameraRaw_3F_error.jpg" target="_blank"><img class="alignleft size-medium wp-image-1723" itemprop="image" alt="AdobeCameraRaw 3F error" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/AdobeCameraRaw_3F_error-300x208.jpg" width="300" height="208" /></a><strong>That&#8217;s because the <span itemprop="mentions" itemscope="" itemtype="http://schema.org/SoftwareApplication"><span itemprop="name">Adobe Camera Raw</span> (ACR) that ships with <span itemprop="applicationSuite">CS6</span></span> expects the file to belong to a digital camera &#8211; which is not</strong>. Actually, the 3F is just a plain, bitmap TIFF file with some extra proprietary tags, that ACR can&#8217;t manage properly.</p>
<p>This didn&#8217;t happen back with CS5, unless you&#8217;ve installed some beta version of ACR. Check it out from the menu: <em>Photoshop &#8211; About Plug-In &#8211; Camera Raw&#8230;</em> (CS5 version should be 6.x).</p>
<p>There&#8217;s of course a workaround, but first let me review briefly why you do want to open a 3F in Photoshop bypassing ACR.</p>
<h2>Why opening a 3F in Photoshop?</h2>
<p>In order to retouch it! Think about the 3F as a scanner raw file &#8211; you can tweak each parameter in the <span itemprop="mentions" itemscope="" itemtype="http://schema.org/SoftwareApplication"><span itemprop="copyrightHolder">Hasselblad</span> <span itemprop="name">FlexColor</span> software</span> and finally export a TIFF. Alas, scanned film has to be retouched: dust, scratches, blotches, hairs, chemical halos, you know what I mean. Unless you&#8217;re willing to retouch the TIFF each time you export it with different parameters from FlexColor (you aren&#8217;t), <strong>the best workflow is</strong>:</p>
<ol>
<li>Open the 3F in <span itemprop="mentions" itemscope="" itemtype="http://schema.org/SoftwareApplication"><span itemprop="name">Photoshop CS6</span></span> in order to retouch it.</li>
<li>Save the retouched 3F.</li>
<li>Open the retouched 3F in FlexColor (tweaking the parameters to your taste).</li>
<li>Export the (usually) TIFF file from FlexColor.</li>
<li>Open the TIFF in Photoshop and let the fun begin.</li>
</ol>
<p><strong>Why should I export many time a 3F, isn&#8217;t one time just enough? </strong>Fair question, but consider that:</p>
<ul>
<li>People get more experienced over time, and you may want to elaborate a second time a scan you&#8217;ve acquired and processed in the past (and you&#8217;re not really satisfied with the old result).</li>
<li>You may want to sandwich two or more FlexColor versions (say, one corrected for the highlights, one for the mid-tones and shadows) in Photoshop.</li>
<li>You may be a service provider willing to return the client a flawless 3F scan.</li>
</ul>
<p>So <strong>your goal is not to open a 3F with Adobe Camera Raw</strong> (which can&#8217;t export nor save a 3F), <strong>just to open it as a TIFF-like file</strong> to retouch it in Photoshop.</p>
<h2>1. The easy and smooth way</h2>
<p>I&#8217;ve discovered this one very recently. Provided you&#8217;ve installed the  <strong>Imacon 3F Plug-In for Photoshop</strong> (see the section 2, below), just <strong>File &#8211; Open</strong> in Photoshop, and select a 3F:</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/Photoshop_open3F_1.jpg" target="_blank"><img class="aligncenter size-full wp-image-1758" alt="Photoshop open 3F 01" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/Photoshop_open3F_1.jpg" width="829" height="529" /></a></p>
<p>Now, just select the Imacon 3F format as outlined below:</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/Photoshop_open3F_2.jpg" target="_blank"><img class="aligncenter size-full wp-image-1759" alt="Photoshop open 3F 2" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/Photoshop_open3F_2.jpg" width="829" height="529" /></a></p>
<p>And voilà it will open smoothly and easily!</p>
<h2>2. The old tricky way</h2>
<p><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/ImaconPlugin_version.jpg" target="_blank"><img class="alignleft size-thumbnail wp-image-1729" alt="Imacon plug-in version" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/ImaconPlugin_version-150x68.jpg" width="150" height="68" /></a>That&#8217;s how I did it before discovering the above method. First thing is the <strong>Imacon 3F Plug-In for Photoshop</strong>, that you can <a title="Imacon 3F Plug-in for Photoshop" href="http://bigano.com/index.php/en/consulting/57-hasselblad/155-il-sistema-3f-hasselblad-flexible-file-format.html?start=9" target="_blank">download for free here</a>. It should be installed by default by FlexColor, so you can check if you have it already. The right place to look into (and/or to copy the downloaded plugin) is the following folder:</p>
<blockquote><p><strong>[MAC]</strong> Photoshop CS6/Plug-ins/File Formats/<strong>imacon3f.plugin</strong><br />
<strong>[PC]</strong> Photoshop CS6/Plug-ins/File Formats/<strong>Imacon 3f.8bi</strong></p></blockquote>
<p>Second thing is to <strong>temporarily get rid of Adobe Camera Raw</strong>. It&#8217;s ACR that intercepts the 3F opening and fires the &#8221;Photoshop cannot open this file&#8221; error. You do this by closing Photoshop and moving away the following file:</p>
<blockquote><p><strong>[MAC]</strong> Macintosh HD/Library/Application Support/Adobe/Plug-Ins/CS6/File Formats/<strong>Camera Raw.plugin</strong><br />
<strong>[PC]</strong> Program Files/Common Files/Adobe/Plug-Ins/CS6/File Formats/<strong>Camera Raw.8bi</strong></p></blockquote>
<p>You can move it to the Desktop or some other folder &#8211; then restart Photoshop CS6. If you look in the menu <em>Photoshop &#8211; About Plug-In </em>there shouldn&#8217;t be any mention of Camera Raw anymore.</p>
<p>Now, if you&#8217;ve correctly installed the Imacon 3F plugin and got rid of Camera Raw, open a 3F and it should open correctly. Remember to move it back in the correct position when you&#8217;re done!</p>
<h3>Automatize file moving</h3>
<p><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/Apple-Automator.jpg"><img class="alignleft size-full wp-image-1736" alt="Apple Automator" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/Apple-Automator.jpg" width="128" height="128" /></a>If you&#8217;re on a Mac (maybe there&#8217;s a Windows equivalent, please suggest it in the comments) you can use the OSX built-in Apple <strong>Automator</strong> application.</p>
<p>Open it and choose <strong>File &#8211; New &#8211; Application</strong>. Then, from the Library column select <strong>Utilities</strong>, then drag the <strong>Quit Application</strong> in the workspace. There, select the Adobe Photoshop CS6.app from the dropdown menu &#8211; just to make sure Photoshop isn&#8217;t open when you move files around.</p>
<p>Next, from the Library column select<strong> Files &amp; Folders</strong>, and drag first the <strong>Get Specified Finder Items</strong>, then the <strong>Move Finder Items</strong> components, selecting respectively the camera raw plugin file and the destination folder (the Desktop or a temp folder, for instance).</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/AppleAutomator_moving.jpg" target="_blank"><img class="aligncenter size-large wp-image-1735" alt="AppleAutomator moving" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/AppleAutomator_moving-1024x487.jpg" width="1024" height="487" /></a></p>
<p>Now <strong>File &#8211; Save</strong> the application to the Desktop. If you double click on it, the camera raw plugin file moves from its original location to the temp folder. You can build in the very same way an Automator application that moves it back into place. Keep both apps handy, so <strong>with a double-click you can move files without having to remember who needs to go where!</strong></p>
<h2>Retouching a 3F in Photoshop</h2>
<p>If you&#8217;re new to 3F, I suggest you to visit the excellent <a title="Roberto Bigano Hasselblad 3F page" href="http://bigano.com/index.php/en/consulting/57-hasselblad/155-il-sistema-3f-hasselblad-flexible-file-format.html?showall=1" target="_blank">Roberto Bigano&#8217;s 3F resources page</a> first. My current workflow, when I&#8217;m in need of 3F retouching (which is basically&#8230; always), is as follows. Click on the thumbnails for a bigger version.</p>
<p><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_01.jpg" target="_blank"><img class="alignleft size-thumbnail wp-image-1741" alt="3F Retouching 01" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_01-150x94.jpg" width="150" height="94" /></a></p>
<h3>1. Open the 3F and save a .PSB</h3>
<p>Say that you&#8217;ve a <strong style="line-height: 13px;">myScan.fff</strong> file. Open it in Photoshop and immediately save a copy as a .psb (Photoshop Large Format document), <strong style="line-height: 13px;">myScan.psb</strong>. Leave alone the original .fff file, you&#8217;ll be dealing with it again when the retouching is done.</p>
<div style="width: 170px; float: left;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_02.jpg" target="_blank"><br />
<img class="alignleft size-thumbnail wp-image-1738" alt="3F Retouching 02" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_02-150x93.jpg" width="150" height="93" /><br />
</a><br />
<a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_03.jpg" target="_blank"><br />
<img class="alignleft size-thumbnail wp-image-1739" alt="3F Retouching 03" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_03-150x93.jpg" width="150" height="93" /><br />
</a><br />
<a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_04.jpg" target="_blank"><br />
<img class="alignleft size-thumbnail wp-image-1740" alt="" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_04-150x66.jpg" width="150" height="66" /><br />
</a></div>
<h3>2. Retouch the PSB</h3>
<p>One thing to keep in mind is that you&#8217;re not (at this stage) dealing with noise reduction or color correction &#8211; here you just do the always-boring, zen-like practice of manual dust and scratches removal. <strong>Clone tool, Healing Brush, time and patience will be your friends</strong>.<br />
Duplicate the background layer, call it &#8220;Retouching&#8221; or something else, zoom in and start retouching. If you happen to have a negative scan (which opens as a caramel pudding), I suggest you to add an Invert adjustment layer (which turns everything into a cyan flat-land) and above it a set of Curves adjustment layer (rough curves, just to restore a decent tone and color and make the retouching easier).</p>
<p>Mind you, do not make the Clone tool and the Healing brush sampling &#8220;All Layers&#8221;. Either &#8220;Current Layer&#8221; or &#8220;Current &amp; Below&#8221; will be ok &#8211; if you wonder why, try it yourself.</p>
<p>When you&#8217;re done, remove the now useless adjustment layers and <strong>flatten the myScan.psb</strong>.</p>
<h3 style="line-height: 25px;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_02.jpg"><img class="alignleft size-thumbnail wp-image-1738" alt="3F Retouching 02" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_02-150x93.jpg" width="150" height="93" /></a></h3>
<h3>3. Paste the retouched layer in the 3F</h3>
<p>Open both the original <strong>myScan.fff</strong> and the retouched<strong> myScan.psb</strong>. Drag the Background layer from the .psb and shift-drop it (i.e. do that pressing the shift key in order to auto-align it) into the 3F. You should have two layers in the <strong>myScan.fff</strong> now: the original below and the retouched above.</p>
<h3><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_01.jpg"><img class="alignleft size-thumbnail wp-image-1741" alt="3F Retouching 01" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/3f_Retouching_01-150x94.jpg" width="150" height="94" /></a>4. Save a copy of the retouched 3F</h3>
<p>Flatten the <strong>myScan.fff</strong>. Leave it <strong>without any embedded ICC profile</strong> (remove it if necessary: <em>Edit &#8211; Assign Profile &#8211; Don&#8217;t Color Manage This Document</em>) and double check that it has a <strong>single Background layer</strong> only.</p>
<p>Now <strong>save the file as 3F</strong> (if you don&#8217;t find the <em>Format: Imacon 3F</em> in the saving options the 3F plugin hasn&#8217;t been installed correctly) with a different name, say <strong>myScan_clean.fff</strong>. If you have FlexColor already opened and pointing to the folder where the files are, close and reopen it in order to let the software read them again.</p>
<p><img class="alignright size-full wp-image-1751" alt="FlexColor Detail Window" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FlexColor_DetailWindow.jpg" width="300" height="280" /></p>
<h3>Caveat</h3>
<p>FlexColor preview (at least when your 3Fs are very big &#8211; say a 6&#215;12 cm at full resolution) isn&#8217;t based upon the actual file reading, but upon an embedded low-res image. Which is not affected by your retouching any way, so the 3F will keep showing dust and scratches. If you want to make sure your retouching has been applied, check it opening the Detail window (it&#8217;s the button with the magnifying glass icon): this forces FlexColor to read and show a portion of the actual file. Anyway, when you&#8217;ll export and the TIFF, it&#8217;ll be clean!</p>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/qku0Hvv-ESk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/02/how-to-open-and-retouch-hasselblad-3f-scanner-files-in-photoshop-cs6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing Filter Forge</title>
		<link>http://www.davidebarranca.com/2013/02/introducing-filter-forge-for-photoshop/</link>
		<comments>http://www.davidebarranca.com/2013/02/introducing-filter-forge-for-photoshop/#comments</comments>
		<pubDate>Sat, 16 Feb 2013 23:59:54 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Filter Forge]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Bigger Hammer]]></category>
		<category><![CDATA[effects]]></category>
		<category><![CDATA[PPW]]></category>
		<category><![CDATA[textures]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1663</guid>
		<description><![CDATA[Filter Forge is a PS plugin; actually it's more than a PS plugin, Filter Forge is a PS plugins' container (some 9000 of them, freely available); no really, that's not as exciting as the fact that Filter Forge lets you build your own PS filters. Visually. Oh listen: follow me, I'm gonna show it to you - it's easier than you think and a lot fun.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p><meta itemprop="dateCreated" content="2013-02-17" /><br />
<a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank">Filter Forge</a> is a PS plugin; actually it&#8217;s more than a PS plugin, Filter Forge is a PS plugins&#8217; container (some 9000 of them, freely available); no really, that&#8217;s not as exciting as the fact that Filter Forge lets you <em>build</em> your own PS filters. Visually. Oh listen: follow me in this <span itemprop="name">Filter Forge introduction</span>, I&#8217;m gonna show it to you &#8211; it&#8217;s easier than you think and a lot fun.<span id="more-1663"></span></p>
<div itemprop="about" itemscope="" itemtype="http://schema.org/SoftwareApplication">
<p><meta itemprop="applicationSuite" content="Photoshop" /><a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank"><span itemprop="name">Filter Forge</span></a> has been around for some years. As a technology is remarkably interesting, and now that it gets close to version 4 (currently in beta stage) I&#8217;ve decided that it was time to <a title="Filter Forge Licensing options" href="http://www.filterforge.com/buy/" target="_blank">invest some of my money</a> and start exploring it. Basically <strong>Filter Forge is both a Photoshop filter and a standalone image processing application</strong> (Mac/PC); it comes with several built-in algorithms (i.e. filters), but you&#8217;re allowed to download for free about ten thousands of them (not kidding: actual count is 9.388) from their website &#8211; made by a lively community of developers. Oh, and of course you&#8217;re invited to contribute, since <strong>filters building is implemented as a visual, node base operation of dragging &amp; linking components</strong>, and rewarded even with a free copy of the software. Read along.</p>
<h2>Textures and Effects</h2>
<p>Filter Forge biggest strength appears to be texture creation (so if you&#8217;re doing any kind of 3D modelling work you should definitely take a look at it). I&#8217;m not too much into that, so I&#8217;ll just mention that it allows <strong>procedural texture creation</strong> &#8211; which means that you sort of put down the &#8220;<em>texture formula</em>&#8221; and the software will create the final bitmap resolution-independently, in a seamless tiling fashion. Which is kind of cool, to put it mildly: few examples as follows (look at them and keep whispering &#8220;<strong>procedurally generated, seamless tiled, 5.000 of them&#8230;</strong>&#8220;).</p>
<div id="attachment_1667" class="wp-caption aligncenter" style="width: 580px"><a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank"><img class="size-full wp-image-1667 " itemprop="image" alt="FilterForge example textures" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_example_textures.jpg" width="570" height="570" /></a><p class="wp-caption-text"><a title="Soft Fur" href="http://www.filterforge.com/filters/11133.html" target="_blank">Soft Fur</a> (by Heliagon), <a title="Suburbia" href="http://www.filterforge.com/filters/6635.html" target="_blank">Suburbia</a> (by ThreeDee), <a title="Biologic I" href="http://www.filterforge.com/filters/10792.html" target="_blank">Biologic I</a> (by Aurum), <a title="More Rough Wood" href="http://www.filterforge.com/filters/10809.html" target="_blank">More Rough Wood</a> (by Sharandra).<br />High resolution image are of course much more detailed than I&#8217;m allowed to show here!</p></div>
<p>Each texture, in turn, has its own set of generating parameters that you can tweak in order to get different results &#8211; and several ready made presets for your convenience.</p>
<div id="attachment_1668" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_SwissCheese.jpg" target="_blank"><img class=" wp-image-1668  " alt="FilterForge SwissCheese" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_SwissCheese-1024x459.jpg" width="570" height="256" /></a><p class="wp-caption-text">Yes, you can <em>procedurally</em> generate this one too (<a title="Swiss Cheese" href="http://www.filterforge.com/filters/4661.html" target="_blank">Swiss Cheese</a>, by Capadilla)</p></div>
<p>That said, it&#8217; fair to say that FF engine is <em>astonishingly powerful</em>.<em> </em></p>
<blockquote><p>Mind you: I&#8217;m not gettin paid from them to soak this post with wild enthusiasm, it is entirely in-house. <strong>I&#8217;ve purchased their software</strong> (version 3 + version 4 preorder) so I&#8217;m not biased. I&#8217;ve then decided to affiliate with&#8217;em because I really believe it&#8217;s a great product, so if you consider trying Filter Forge do it <a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank">following this link</a>, thanks!</p></blockquote>
<p>But what interests me the most, because of my background as a PS retoucher (one life is always too short), are <strong>Effects filters</strong> &#8211; the kind of ones you&#8217;d apply to 2D pictures (contrast enhancing, artistic effects, etc). On FF website among the <strong>about 4.000 algorithms freely available</strong> there are true gems, many of which would compete with standalone plugins currently for sale.</p>
<div id="attachment_1670" class="wp-caption aligncenter" style="width: 580px"><a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank"><img class="size-full wp-image-1670" itemprop="screenshot" alt="FilterForge example effects" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_example_effects.jpg" width="570" height="570" /></a><p class="wp-caption-text"><a title="Engraving" href="http://www.filterforge.com/filters/8766.html" target="_blank">Engraving</a> (by Vladimir Gorovin), <a title="Sketchy Painting" href="http://www.filterforge.com/filters/8847.html" target="_blank">Sketchy Painting</a> (by emme), <a title="Ice Age" href="http://www.filterforge.com/filters/1587.html" target="_blank">Ice Age</a> (by Crapadilla), <a title="Ranged Sharpen" href="http://www.filterforge.com/filters/9726.html" target="_blank">Ranged Sharpen</a> (by Skybase)</p></div>
<h2>Filter creation</h2>
<p>FF licensing scheme has three different offers: Basic, Standard and Pro. With the exception of the first one, you can <strong>build your own filters</strong> and (that&#8217;s truly amazing) <strong>modify any existing filter of the library</strong>. Say that you&#8217;re crazy about the Ice Age filter, and you wonder how on earth the author has been able to came up with something that funky.<br />
Right click on the filter item, select &#8220;Edit filter&#8221; and voilà all the magic is <em>explained</em> (provided you can follow what happens):</p>
<p><img class="aligncenter size-full wp-image-1672" alt="FilterForge Filters Creation" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_Filters_Creation.jpg" width="570" height="302" /></p>
<p>Yep, that&#8217;s what a filter looks like, you&#8217;re peeping its <em>algorithm</em>. It&#8217;s made with a <strong>mix of components that you drag and drop on the workspace and combine together</strong> &#8211; so that the output of the first become the input of the following ones. And so on and so on &#8211; you&#8217;ve not to worry about memory management and writing code (even if there&#8217;s a <strong>LUA based scripting engine</strong> that you can work with, customizing your own components). You can really focus on the algorithm only.</p>
<p>To read the full features list, please see <a title="Filter Forge" href="http://www.filterforge.com?affiliateid=200188983" target="_blank">Filter Forge website</a>.</p>
<h2>Filter creation example</h2>
<p>I&#8217;m going to show you one of my first (very basic I know, but hey I&#8217;m just a FF beginner!) experiments with Filters creation, which took me about 10 minuts from start to finish -</p>
<div itemprop="mentions" itemscope="" itemtype="http://schema.org/CreativeWork">
<p>I&#8217;ve implemented <strong><span itemprop="author" itemscope="" itemtype="http://schema.org/Person"><span itemprop="name">Dan Margulis</span></span>&#8216; <span itemprop="name">&#8220;<em>Bigger Hammer</em>&#8221; technique</span>, from his <span itemprop="mentions"><em>Picture Postcard Workflow (PPW)</em></span></strong>. Dan also calls the Bigger Hammer &#8220;<em>Shadows/Highlights on steroids&#8221;</em>: basically we talk about <span itemprop="description">a contrast normalization technique based upon an inverted overlay that boost highlights detail and help shadows too.</span></p>
<p><img class="alignleft size-full wp-image-1673" itemprop="image" alt="PPW BiggerHammer" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/PPW_BiggerHammer.jpg" width="289" height="342" /></p>
</div>
<p>In Photoshop you&#8217;d do this way &#8211; the Layers palette should be pretty self-explanatory, top-down:</p>
<p><strong>Darkening Layer</strong>: a copy of the background, Darken blending mode (opacity to taste) &#8211; use it to recover shadows darkness.</p>
<p><strong>Overlay Layer</strong>: an inverted channel (either R, G, B) Gaussian Blurred, Overlay blending mode.</p>
<p><strong>Background</strong>: the original image.</p>
<p>Unless you turn to scripting, to compare different channels for the overlay (say R instead of G) and blurring radii isn&#8217;t possible in real time. I&#8217;ve implemented such controls in Filter forge, so that you&#8217;re able to: switch  the channel for the inverted overlay (R, G or B); modify the Gaussian Blur radius; modify the Overlay layer and Darkening layer opacity (i.e both the overall effect&#8217;s and the Shadow recovering strength). As a plus, an overlay usually affect color as well &#8211; I&#8217;ve implemented it so that Luminosity only is altered. Anyway, here it goes.</p>
<h3>1. Setting up the project</h3>
<p>First thing I create a blank filter (Filter &#8211; New):</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_01.jpg" target="_blank"><img class="aligncenter size-large wp-image-1679" alt="BiggerHammer 01" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_01-1024x507.jpg" width="1024" height="507" /></a></p>
<p>As you see, the Result component (what you&#8217;ll get from running the filter in PS) shows a red alert: it has no input yet. Let&#8217;s create one dragging from the Components column on the right, under External group, an Image component on the workspace; linking it to the Result. You do a link dragging the green output arrow of a component on to the green input point of another.</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_02.jpg" target="_blank"><img class="aligncenter size-large wp-image-1681" alt="BiggerHammer 02" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_02-1024x507.jpg" width="1024" height="507" /></a></p>
<p>This is a dummy filter that does nothing, i.e. input is equal to output (but it works!). Notice that being italian I&#8217;ve selected a more appropriate placeholder image. Let&#8217;s start adding interesting pieces.</p>
<h3>2. Extracting Luminosity</h3>
<p>One important feature is to leave color alone working with a luminosity channel. FF implements RGB, Lab, HLS, HSB, and HSY colorspaces. Apparently, <a title="HSY colorspace" href="http://www.filterforge.com/more/help/Miscellaneous/HSYColorModel.html" target="_blank">HSY</a> lightness (Y) channel takes human perception of color into account: it looks promising, so I&#8217;ve added three <a title="Extract HSY" href="http://www.filterforge.com/more/help/Components/Channels/ExtractHSY2.html" target="_blank">Extract HSY</a> components and one <a title="Assemble HSY" href="http://www.filterforge.com/more/help/Components/Channels/AssembleHSY3.html" target="_blank">Assemble HSY</a> to split and recombine channels, linking them as you see in the screenshot &#8211; from now on I&#8217;ll be dealing with the Y channel only.</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_03.jpg" target="_blank"><img class="aligncenter size-large wp-image-1682" alt="BiggerHammer 03" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_03-1024x507.jpg" width="1024" height="507" /></a></p>
<h3>3. Extracting R, G, B channels</h3>
<p>I now need some channels to be used for the inverted layer blending (in overlay). I&#8217;ll stick to R, G, B for the clarity&#8217;s sake, but nothing would prevent me implementing Lab and HSY as well. So here they are three <a title="Extract RGB" href="http://www.filterforge.com/more/help/Components/Channels/ExtractRGB2.html" target="_blank">Extract RGB</a> components hardcoded to output the desired channels (inverted, see the checkbox on the left column).</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_04.jpg" target="_blank"><img class="aligncenter" alt="BiggerHammer 04" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_04-1024x519.jpg" width="1024" height="519" /></a></p>
<h3>4. Building a Switch</h3>
<p>FF implements Controls, which are a way to let the user, uhm, control the filter&#8217;s values. Alas, there&#8217;s no built in Radio-button set, so as a workaround I&#8217;ve to use a <a title="Switch" href="http://www.filterforge.com/more/help/Components/Obsolete/Switch3.html" target="_blank">Switch</a> component linked with an <a title="IntSlider" href="http://www.filterforge.com/more/help/Components/Controls/IntSliderControl.html" target="_blank">IntSlider</a>. The Slider ranges 1-2-3, which enables the R, G, B positions of the Switch (i.e. 1=R, 2=G, 3=B).</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_05.jpg" target="_blank"><img class="aligncenter" alt="BiggerHammer 05" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_05-1024x519.jpg" width="1024" height="519" /></a></p>
<h3>5. Adding the Blur</h3>
<p>Under the Processing group you can find built-in components for traditional image processing algorithm, such as <em>Minimum, Maximum, Blend, Blur, High Pass</em>, etc. I&#8217;ve added a <a title="Blur" href="http://www.filterforge.com/more/help/Components/Obsolete/Blur.html" target="_blank">Blur</a> component with a <a title="Slider" href="http://www.filterforge.com/more/help/Components/Controls/SliderControl.html" target="_blank">Slider</a> control, remapping it to a maximum value of 40 (I won&#8217;t get into remapping and percent values here). The slider will control the amount of blurring applied to the overlay channel.</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_06.jpg" target="_blank"><img class="aligncenter" alt="BiggerHammer 06" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_06-1024x519.jpg" width="1024" height="519" /></a></p>
<h3>6. Overlay Blend</h3>
<p>FF comes with a <a title="Blend" href="http://www.filterforge.com/more/help/Components/Obsolete/Blend4.html" target="_blank">Blend</a> component that supports common PS blending modes and opacity. I&#8217;ve linked the original Y channel (as the background) to the blurred inverted channel (as the foreground), setting the blend to Overlay. Mind you, I&#8217;ve added a Slider control to tweak the opacity (that is: the effect&#8217;s strength). So far the big picture is as follows:</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_07.jpg" target="_blank"><img class="aligncenter" alt="BiggerHammer 07" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_07-1024x648.jpg" width="1024" height="648" /></a></p>
<h3>7. Shadow darkness</h3>
<p>I&#8217;ve added a second Blend, using a second copy of the original Y in Darken (with a Slider controlling the opacity) to mimic the Darkening layer (as in the PS Layers palette screenshot depicts). This time the Y is the foreground, while the result of the overlay blend of the previous step is the Background:</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_08.jpg" target="_blank"><img class="aligncenter size-large wp-image-1688" alt="BiggerHammer 08" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_08-1024x648.jpg" width="1024" height="648" /></a></p>
<h3>8. Linking the Result</h3>
<p>It&#8217;s time to un-link the Assemble HSY component from the Y channel coming from the Extract HSY, substituting it with the output of the chain of components ending with the shadow darkness blend. Now the filter is done! The complete pipeline is as follows:</p>
<p><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_PPW_BiggerHammer.jpg"><img class="aligncenter size-large wp-image-1689" alt="FilterForge PPW Bigger Hammer" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/FilterForge_PPW_BiggerHammer-1024x421.jpg" width="1024" height="421" /></a></p>
<p>You can now save it as a filter, adding info (such as instruction, author, description) and tags. FF allows you a before/after draggable split view, and the controls I&#8217;ve been adding are now automatically gathered in the Settings tab, ready to be modified on the fly:</p>
<p style="text-align: center;"><a href="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_09bis.jpg" target="_blank"><img class="aligncenter" alt="BiggerHammer 09" src="http://www.davidebarranca.com/wp-content/uploads/2013/02/BiggerHammer_09bis-1024x779.jpg" width="1024" height="779" /></a></p>
<h2>Conclusions</h2>
<div itemprop="review" itemscope="" itemtype="http://schema.org/Review"><span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating"><meta itemprop="ratingValue" content="5" /></span><span itemprop="description">I&#8217;m really excited to start experimenting with Filter Forge: <strong>its powerful processing engine and the peculiar way you build filters with it lead to remarkable results</strong>.</span></div>
<p>For instance, I&#8217;ve been able to replicate exactly my dear Photoshop Extension <a title="ALCE - Advanced Local Contrast Enhancer" href="http://cs-extensions.com/alce-advanced-local-contrast-enhancer/" target="_blank">ALCE (Advanced Local Contrast Enhancer)</a> and it took me, not kidding, about 5 minutes (which is kind of sad, if I think about all the PS extension development time in Extendscript + Actionscript).</p>
<p>Of course there&#8217;s room for improvement (on controls, for instance) &#8211; I&#8217;m confident that new version will keep advancing. <strong>As a developing platform is really amazing</strong>. The only actual big flaw (at least it&#8217;s a flaw from my own personal point of view) is that <strong>Filter Forge business model is build around the idea that the software value is boosted by the huge amount of free resources that come with it</strong> &#8211; that is, 9.388 filters created by skilled developers from all over the world. Moreover, you can open, study and tweak each one of them &#8211; and that&#8217;s definitely the better way to learn. Alas <strong>this business model collides with the possibility to compile your own filters into a binary form to sell them as standalone PS plugins. That&#8217;s not allowed</strong>: both for licensing reasons and because that way anyone could just grab one of the 9.388, pack and sell it (not fair, indeed).</p>
<p>It has to be acknowledged that Filter Forge has <strong>several interesting rewarding policies</strong> towards filters authors and contributors (a credits scoring system they use to assign free licenses) so they pursue their business model coherently &#8211; kudos to them!</p>
<p>Please <a title="Filter Forge Home Page" href="http://www.filterforge.com?affiliateid=200188983" target="_blank">visit Filter Forge</a> for a full list of features, available filters and more!</p>
</div>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/itvejNB9DWY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/02/introducing-filter-forge-for-photoshop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Double USM #3: Examples</title>
		<link>http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-3-examples/</link>
		<comments>http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-3-examples/#comments</comments>
		<pubDate>Mon, 28 Jan 2013 18:10:22 +0000</pubDate>
		<dc:creator>Davide Barranca</dc:creator>
				<category><![CDATA[Double USM]]></category>
		<category><![CDATA[Extensions and Scripts]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[halos]]></category>
		<category><![CDATA[sharpening]]></category>
		<category><![CDATA[unsharp mask]]></category>

		<guid isPermaLink="false">http://www.davidebarranca.com/?p=1524</guid>
		<description><![CDATA[Double USM is the brand new Sharpening script for Photoshop coded by Davide Barranca; in this third post of the series I'll show you examples for traditional sharpening, HiRaLoAm (High Radius Low Amount) and mixed sharpening.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><div itemprop="review" itemscope="" itemtype="http://schema.org/Review"><span itemprop="name">Double USM</span> is a brand new Sharpening script for Photoshop; in this third post of the series I&#8217;ll show you examples for <strong>traditional sharpening</strong>, <strong>HiRaLoAm</strong> (High Radius Low Amount) and <strong>mixed sharpening</strong>.<br />
<span id="more-1524"></span>&nbsp;</p>
<div class="box-info">
<p><span itemprop="description">This is a 3 part series on <strong>Double USM, </strong>a <strong>Photoshop sharpening script</strong> coded by <span itemprop="author" itemtype="http://schema.org/Person"><span itemprop="name">Davide Barranca</span></span> that lets you control both<strong> Amount and Radius</strong> for<strong> Dark and Light Halos </strong>in the UnSharp Mask filter).</span></p>
<ol>
<li><a title="Double USM - #1 Introduction" href="http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-1-introduction" target="_blank">Introduction (sharpening basics, Double USM)</a></li>
<li><a title="Double USM - #2 Features " href="http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-2-features" target="_blank">Features (interface, functionality and Batch processing)</a></li>
<li>Examples (case studies) <strong>&lt;- you&#8217;re here!</strong></li>
</ol>
<p>Double USM is already <strong>available for sale</strong> on <a itemprop="url" title="Double USM on Adobe Exchange" href="http://cs-extensions.com/double-usm-unsharp-mask/" target="_blank">Adobe Exchange</a> and soon on <a title="Roberto Bigano eStore" href="#" target="_blank">bigano.com</a>.</p>
</div>
<h2>Warning!</h2>
<p>If you&#8217;re not familiar with Sharpening or want to recap the basics, I&#8217;ve covered the topic <a title="Double USM - #1 Introduction" href="http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-1-introduction" target="_blank">extensively here</a>. We&#8217;re going to explore three kind of sharpening you can apply with Double USM: <em>traditional</em> (fine detail), <em>HiRaLoAm</em> (shape and 3D look), <em>mixed</em> (a combination of the former ones). I&#8217;m going to show an example for each case, but there&#8217;s of course a lot of room for your personal experimentation, which I strongly encourage (you can read a <a title="Sharpening case study" href="http://www.davidebarranca.com/2011/11/sharpening-case-study/" target="_blank">step-by-step Sharpening Case Study</a> I&#8217;ve published some time ago as an example of a possible advanced application).</p>
<p><img class="alignleft size-full wp-image-1580" alt="Grappa" src="http://www.davidebarranca.com/wp-content/uploads/2013/01/grappa_150.jpg" width="150" height="242" />Mind you: <strong>I&#8217;ll be a bit heavy-handed</strong> in the examples &#8211; I&#8217;d like you to spot halos easily; moreover, we&#8217;ll be studying not only &#8220;<em>how much</em>&#8221; sharpening to apply (which can be a matter of taste), but specifically &#8220;<em>which kind</em>&#8220;. That is to say, the <strong>Dark / Light Halos ratios</strong>, both in terms of Amount and Radius. <strong>Don&#8217;t mind too much absolute values</strong> (why 345% Amount and not 350%?), <strong>but instead think to the relation between Dark and Light sharpening, this way</strong>: Light Halos are, say, <em>one third smaller</em> (Radius) and <em>a half weaker</em> (Amount) than Dark Halos.</p>
<p>I&#8217;m interested in finding the &#8220;<em>right kind</em>&#8221; of sharpening; as once my Maestro <a title="Dan Margulis" href="http://www.ledet.com/margulis" target="_blank">Dan Margulis</a> during one of is italian trip said &#8220;one liter of <a title="Grappa" href="http://en.wikipedia.org/wiki/Grappa" target="_blank" rel="nofollow">Grappa</a> is too much of a good idea&#8221;, so if you think it&#8217;s over-sharpened, just reduce the opacity of the layer to your taste and it&#8217;ll be OK.</p>
<h2>Traditional Sharpening</h2>
<p>This is what we&#8217;re mostly used to: high frequency detail boosting (i.e. small features and borders). Standard sharpening values include <strong>high Amounts</strong> (up to 500% if you&#8217;re heavy-handed) and <strong>low Radii</strong> (it depends on the image size and the output &#8211; display, print/press &#8211; but we talk about values ranging from 0.2/0.4px for the web, up to about 2.0px or more). Threshold is really up to you, and must be evaluate on each picture: sometimes you&#8217;d be better off masking the sharpening level with some kind of luminosity mask or border mask, instead to tweaking the Threshold.</p>
<div id="attachment_1585" class="wp-caption aligncenter" style="width: 580px"><img class="size-full wp-image-1585" alt="Sharpening example 01 original" src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_01a_orig.jpg" width="570" height="428" /><p class="wp-caption-text">Still-life shot of a Manfrotto leather photo bag by <a title="Roberto Bigano photographer" href="http://www.bigano.com" target="_blank">Roberto Bigano</a></p></div>
<p>This first picture comes as a pretty high resolution file &#8211; it&#8217;s been captured using an <strong>Hasselblad 528 Multi Shot</strong> (four shots recording real non-interpolated color) with a <strong>HC4-120 Macro</strong> lens.</p>
<p><img class="alignleft size-full wp-image-1587" alt="Sharpening example 01 orig detail" src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_01_orig_detail.jpg" width="300" height="300" /></p>
<p>Roberto masters a particular technique called <strong>Focus Stacking</strong> (that is, he takes several multi-shot captures focusing at progressively distant planes, then blends the files into a amazingly detailed picture).  Anyway, at left there is a 100% crop of a detail so you can get the idea of the image size and quality. I&#8217;m going to <strong>downsample the file</strong> to 50% so that the values refers to a picture sized: 2720 x 2040 px. Let&#8217;s pretend we need to sharpen it for a printed ad.</p>
<p>We can easily predict that a traditional sharpening (high Amount, Low Radius would emphasize too much the fabric texture, which highlights are going to &#8220;eat&#8221; detail, resulting in a polka-dots-like white noise, a bad scenario. On the other hand, sheet-fed presses and high quality coated papers can stand quite a bit of sharpening, so we&#8217;d like to boost the existing detail &#8211; it&#8217;s a finely crafted technical product after all, and the texture should be prominent in my personal opinion.</p>
<p>So, as follows there&#8217;s a comparison between the original file, the Photoshop&#8217;s UnSharp Mask filter (Amount 300%, Radius 1.5px) and the Double USM default (which Dark Halos are the very same 300% and 1.5px, but <strong>Light Halos are 50% thinner and 50% weaker</strong> &#8211; that is to say: Amount 150% and Radius 0.7)</p>
<div style="padding: 10px; border: 1px solid #ededed; background-color: #f8f8f8; border-radius: 4px; margin-bottom: 20px;">
<div id="showcase-1591-519b6eb26e662" class="wk-slideshow-showcasebuttons" data-widgetkit="showcase" data-options='{"style":"showcase_buttons","autoplay":1,"interval":5000,"width":"auto","height":"auto","duration":500,"index":0,"order":"default","buttons":1,"slices":20,"animated":"slide","caption_animation_duration":500,"effect":"slide","slideset_buttons":0,"items_per_set":3,"slideset_effect_duration":300}'>

	<div id="slideshow-1591-519b6eb26e662" class="wk-slideshow">
		<div class="slides-container">
			<ul class="slides">
												<li>
					<article class="wk-content clearfix"><img src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_01_C1.jpg" alt="Original image" width="570" height="568" class="aligncenter size-full wp-image-1592" /></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_01_C2.jpg" alt="Photoshop UnSharpMask Filter" width="570" height="568" class="aligncenter size-full wp-image-1593" /></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_01_C3.jpg" alt="Double USM sharpening" width="570" height="568" class="aligncenter size-full wp-image-1594" /></article>
				</li>
											</ul>
			<div class="next"></div><div class="prev"></div>		</div>
	</div>

	<div id="slideset-1591-519b6eb26e662" class="wk-slideset no-buttons">
		<div>
			<div class="sets">
								<ul class="set">
										<li>
						<div><div><img src="/wp-content/uploads/theme/widgetkit/tlight_yellow.png" width="25" height="35" alt="Original" /> Original</div></div>
					</li>
										<li>
						<div><div><img src="/wp-content/uploads/theme/widgetkit/tlight_red.png" width="25" height="35" alt="UnSharpMask Filter" /> UnSharpMask Filter</div></div>
					</li>
										<li>
						<div><div><img src="/wp-content/uploads/theme/widgetkit/tlight_green.png" width="25" height="35" alt="Double USM" /> Double USM</div></div>
					</li>
									</ul>
							</div>
					</div>
	</div>
	
</div></div>
<h2>HiRaLoAm</h2>
<p>This is how <a title="Dan Margulis" href="http://www.ledet.com/margulis" target="_blank">Dan Margulis</a> first called a sharpening applied with <strong>High Radius, Low Amount</strong> (the reverse of traditional sharpening). Instead of enhancing high fine detail, a high Radius (in the range of about 15/50px or more, depending on the image size and the subject&#8217;s features) affects wider frequencies and basically shapes the subject: it makes it appear more three-dimensional.</p>
<p>We&#8217;ll be using the following image, a Texas Tea hybrid rose (see the caption for full details &#8211; the original file is about 4400x3600px).</p>
<div id="attachment_1603" class="wp-caption aligncenter" style="width: 580px"><img class="size-full wp-image-1603" alt="Sharpening example 02 original" src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_original.jpg" width="570" height="475" /><p class="wp-caption-text"><strong>Plaublel 4&#215;5</strong> camera with <strong>Sinar Vario</strong> film holder and <strong>Schneider Symmar Macro 180</strong> lens.<br />Fujichrome <strong>Velvia50 6x7cm</strong>, scanner <strong>Hasselblad Flextight X5</strong> &#8211; © <a title="Roberto Bigano photographer" href="http://www.bigano.com" target="_blank">Roberto Bigano</a></p></div>
<p>If you&#8217;re not familiar with HiRaLoAm, practice with it this way:</p>
<ol>
<li>Open a picture and duplicate the background layer (precautionary measure).</li>
<li>Run Photoshop&#8217;s own UnSharp Mask filter and pump up the Amount slider to the max (500%), leave Threshold alone and start raising the Radius up to very large numbers (say 15, 35, 70 pixels or more).</li>
</ol>
<p>Oh yes, the picture looks like crap but it&#8217;s OK:</p>
<div id="attachment_1604" class="wp-caption aligncenter" style="width: 580px"><img class="size-full wp-image-1604" alt="Sharpening example 02 comparison" src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_comparison.jpg" width="570" height="474" /><p class="wp-caption-text">Testing high Radii at crazy Amount &#8211; just to assess the right Radius for HiRaLoAm</p></div>
<p>You see that, even though the Amount is absurd, HiRaLoAm shapes the yellow rose&#8217;s volume &#8211; which Radius does the job best in your opinion?</p>
<p><em>(I haven&#8217;t bothered to fade the UnSharp Mask filter to Luminosity with &#8220;Edit -&gt; Fade&#8230;&#8221; menu item &#8211; in order to avoid chromatic aberration as you see &#8211; we don&#8217;t care about them now)</em></p>
<ol start="3">
<li>Tweak Threshold if necessary, to suppress noise in areas where it may be a problem.</li>
<li>Finally, reduce Amount to pleasing levels &#8211; something like 30% up to 70% (again, these are just suggested values).</li>
</ol>
<p>Double USM has the power to let you control both Light and Dark shaping Halos separately (Amount and Radius), so you&#8217;ve unprecedented  control on the 3D effect you&#8217;re after. Please see in the following comparison the original image, Dark Halos only (available in Double USM checking the Dark preview radio-button), Light Halos only (ibid.) and the combination of <strong>Double USM Dark + Light Halos</strong> (the final result).</p>
<div style="padding: 10px; border: 1px solid #ededed; background-color: #f8f8f8; border-radius: 4px; margin-bottom: 20px;">
<div id="showcase-1608-519b6eb26fe00" class="wk-slideshow-showcasebuttons" data-widgetkit="showcase" data-options='{"style":"showcase_buttons","autoplay":1,"interval":5000,"width":"auto","height":"auto","duration":500,"index":0,"order":"default","buttons":1,"slices":20,"animated":"slide","caption_animation_duration":500,"effect":"slide","slideset_buttons":0,"items_per_set":4,"slideset_effect_duration":300}'>

	<div id="slideshow-1608-519b6eb26fe00" class="wk-slideshow">
		<div class="slides-container">
			<ul class="slides">
												<li>
					<article class="wk-content clearfix"><p style="text-align: center;"><img src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_original.jpg" alt="Sharpening example 02 original" width="570" height="475" class="aligncenter size-full wp-image-1603" title="Original image unsharpened" /></p></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_darken.jpg" alt="Sharpening example 02 dark" width="570" height="475" class="aligncenter size-full wp-image-1610" title="Sharpening's Dark Halos only" /></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_lighten.jpg" alt="Sharpening example 02 light" width="570" height="475" class="aligncenter size-full wp-image-1611" title="Sharpening's Light Halos only" /></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_02_composite.jpg" alt="Sharpening example 02 composite" width="570" height="475" class="aligncenter size-full wp-image-1609" title="Double USM composite effect" /></article>
				</li>
											</ul>
			<div class="next"></div><div class="prev"></div>		</div>
	</div>

	<div id="slideset-1608-519b6eb26fe00" class="wk-slideset no-buttons">
		<div>
			<div class="sets">
								<ul class="set">
										<li>
						<div><div>Original</div></div>
					</li>
										<li>
						<div><div>Dark Halos</div></div>
					</li>
										<li>
						<div><div>Light Halos</div></div>
					</li>
										<li>
						<div><div>Double USM composite</div></div>
					</li>
									</ul>
							</div>
					</div>
	</div>
	
</div></div>
<p>Applied values on the original sized image are: Dark Halos (Amount: 40%, Radius: 60px), Light Halos (Amount 80%, Radius 80px), Threshold zero. So this time <strong>Dark Halos are half weaker and three quarters the size of Light Halos</strong>.</p>
<h2>Mixed Sharpening</h2>
<p>So far we&#8217;ve seen how to tweak Dark and Light Halos in traditional sharpening to boost fine detail, and how to shape a picture with broader halos in HiRaLoAm to get a three-dimensional effect.</p>
<p>Besides advanced topics (masking and iterative sharpening for instance), an easy yet very effective technique that Double USM only allows is:</p>
<ol>
<li><span style="line-height: 13px;">Use <strong>Dark Halos</strong> at high Amount and low Radius to boost the structure as you&#8217;d do with <strong>traditional sharpening</strong>.</span></li>
<li>Use <strong>Light Halos</strong> to add volume, with low Amount and High Radius as you&#8217;d do with <strong>HiRaLoAm</strong>.</li>
</ol>
<p>The following is just one example, and it comes from Roberto Bigano&#8217;s <a title="Plastic Girls" href="http://bigano.com/index.php/en/personal-works/106-personal-works/302-roberto-bigano-plastic-girls-1978-2011.html" target="_blank">Plastic Girls</a> project (a 30 years long study on mannequins around the world). This &#8220;girl&#8221; has been shot with a <strong>Canon G12</strong> compact camera, which at 80 ISO delivers an amazing quality, and it&#8217;s just a low-res crop 1500px wide.</p>
<p>Applied <strong>Double USM values are as follows</strong>: Dark Halos (Amount: 500%, Radius: 0.5px), Light Halos (Amount 40%, Radius 40px), Threshold (3 levels).</p>
<div style="padding: 10px; border: 1px solid #ededed; background-color: #f8f8f8; border-radius: 4px; margin-bottom: 20px;">
<div id="showcase-1615-519b6eb278545" class="wk-slideshow-showcasebuttons" data-widgetkit="showcase" data-options='{"style":"showcase_buttons","autoplay":1,"interval":5000,"width":"auto","height":"auto","duration":500,"index":0,"order":"default","buttons":1,"slices":20,"animated":"scroll","caption_animation_duration":500,"effect":"slide","slideset_buttons":0,"items_per_set":2,"slideset_effect_duration":300}'>

	<div id="slideshow-1615-519b6eb278545" class="wk-slideshow">
		<div class="slides-container">
			<ul class="slides">
												<li>
					<article class="wk-content clearfix"><p><img src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_03_original.jpg" alt="Sharpening example 03 original" width="570" height="428" class="aligncenter size-full wp-image-1617" title="Original unsharpened image" /></p></article>
				</li>
																<li>
					<article class="wk-content clearfix"><img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==" data-src="http://www.davidebarranca.com/wp-content/uploads/2013/01/Sharpening_example_03_DoubleUSM.jpg" alt="Sharpening example 03 DoubleUSM" width="570" height="428" class="aligncenter size-full wp-image-1621" title="Double USM mixed sharpening" /></article>
				</li>
											</ul>
			<div class="next"></div><div class="prev"></div>		</div>
	</div>

	<div id="slideset-1615-519b6eb278545" class="wk-slideset no-buttons">
		<div>
			<div class="sets">
								<ul class="set">
										<li>
						<div><div>Original</div></div>
					</li>
										<li>
						<div><div>Double USM</div></div>
					</li>
									</ul>
							</div>
					</div>
	</div>
	
</div></div>
<h2>Experiment!</h2>
<p>Sharpening is a topic with quite many ramification &#8211; so there&#8217;s a lot of room for personal research; your skills will grow as you get more experienced. Have a look to this <a title="Sharpening case study" href="http://www.davidebarranca.com/2011/11/sharpening-case-study/" target="_blank">step-by-step Sharpening Case Study</a> I&#8217;ve published some time ago, then start experimenting on your own.</p>
<p><span itemprop="reviewBody">I hope you will find Double USM, the first sharpening script able to let you control Dark and Light Halos of the UnSharp Mask filter (for both Amount and Radius) a <span itemprop="reviewRating" itemscope="" itemtype="http://schema.org/Rating"><meta itemprop="worstRating" content="1" /><meta itemprop="bestRating" content="5" /><span itemprop="ratingValue">5</span></span> star tool too!</span><br />
<meta itemprop="image" content="http://www.davidebarranca.com/wp-content/uploads/2013/01/DoubleUSM_interface.jpg" /></p>
<div class="box-info">
<p>This is a 3 part series on <strong>Double USM</strong>.</p>
<ol>
<li><a title="Double USM - #1 Introduction" href="http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-1-introduction" target="_blank">Introduction (sharpening basics, Double USM)</a></li>
<li><a title="Double USM - #2 Features " href="http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-2-features" target="_blank">Features (interface, functionality and Batch processing)</a></li>
<li>Examples (case studies) <strong>&lt;- you&#8217;re here!</strong></li>
</ol>
<p>Double USM is already <strong>available for sale</strong> on <a itemprop="url" title="Double USM on Adobe Exchange" href="http://cs-extensions.com/double-usm-unsharp-mask/" target="_blank">Adobe Exchange</a> and soon on <a title="Roberto Bigano eStore" href="#" target="_blank">bigano.com</a>.</p>
</div>
</div>
</div><img src="http://feeds.feedburner.com/~r/PhotoshopAndCoding/~4/hyGGU_feV2s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.davidebarranca.com/2013/01/double-usm-photoshop-sharpening-script-3-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
