12 March 2013
Russian translation and discussion: Habrahabr.ru
I love Adobe Photoshop. I really do! I have been using it daily for about 10 years. One cannot over-estimate its influence on the world of image editing - which, in many ways, defines how the world around us looks! I'm sure that right now, in your room, there is at least one thing partly designed in Photoshop. All the images in this article were prepared in Photoshop!
In its market, Photoshop is King. You can also call it "standard" (which is mostly good) or "monopoly" (which is mostly bad). But the fact remains - if you work with image editing, you must think in Photoshop's terms and follow its workflows.
Photoshop is not the most complex piece of software (because, let's be fair, digial imaging is not the most complex thing of all). However, it is quite complex, for several reasons. First, it can really do many things. But also, because it is very old, almost as old as I am! This long history of development means Photoshop did not have a chance to re-think any of its core ideas and start some things from scratch. You know, compatibility; and besides, why fix something that works!
Images by about.com
However, recently an idea came to me that's been bugging me, asking to be written and published. So I am writing it here without any specific goal or wish - just because I'd love to share and see what you think. Nothing can be better than an interesting discussion! (Hint - comments are welcome!)
The first thing you learn about Photoshop is layers. A layer is the key feature of Photoshop. If you don't know what Photoshop layer is, I'm afraid the rest of my article will not be interesting to you :-) But very briefly - a layer is a "picture inside picture". You can put several layers on top of each other, and treat each layer as a separate picture. But in the end, they will be "merged" into single image on your display.
What could be possibly a problem with layers? Something we did not even know was a problem, because we use it all the time?
First, a completely unrelated but interesting fact. Do you know that you can see your nose all the time? Even as you read this, you are seeing it! Your brain chooses to ignore it.
OK, back to layers! Imagine you have a Photoshop document with one layer (pixel-based, such as a photo). Let's quicky look through all the things we can do with this layer:
set its properties (name, color in layer palette, locking, etc).
apply various image adjustments (mostly in "Image menu"), such as brightness, contrast, hue, saturation, black and white, invert, etc.
apply a combination of layer styles, also known as layer effects (Layer menu > Layer style > Blending options), such as drop shadow, stroke, outer glow, etc.
apply some filters (found in Filter menu), such as blur, distort, noise.
hide parts of layer with mask (pixel or vector).
hide parts of layer with underneath layer (clipping mask).
change layer content (f.e. rasterize type into pixels).
group layers into "folders".
All these features did not come at once. They were added over the years. Maybe you already start to see where I am going to! These things have different names, and they are designed as different parts of a program. But in the end, they all do only one thing - they modify the layer.
Now, some of these things above will change the layer content directly - it's irreversible. This is how image editing started - no one ever thought about keeping the originals (and even if they thought, hardware was not powerful enough). Other things are reversible - f.e. layer styles, masks.
Recently, Photoshop has been trying to solve the problem of irreversible modifications, by adding even more features on top of existing ones:
Now, I am proud to say I know almost every corner of Photoshop. But, "To enable re-editable smart filters, the selected layer will be converted into a smart object." - huh? I failed to accept and use that. Sorry! It's a hack, not a solution.
When you meet many (great) people around the world, you quickly realize that people may look very different, but their "core" remains the same. Similarly, all these Photoshop features may be produced by different teams in different times, but they all do one thing - they modify the layer.
Below I intend to borrow two concepts from Photoshop, and build a whole new concept from them.
One is, of course, layer. And the other one is clipping mask.
Imagine there's no Heaven, it's easy if you try... Oops, sorry :-) Imagine you have a brand new image editing program, let's call it Onion (because onions have layers!).
You import a photo from your camera, and open it in Onion as a document with one layer (pixel-based). Say you want to make some modifications, such as contrast. Free your mind! Instead of applying modifications, you add "contrast" layer as a child of your photo layer! This might look similar to adjustment layers in Photoshop, and it is actually. But the idea is that everything is a layer:
... and that layers can be both children and parents. And of course "top level" (technically, children of "document"). Similar to clipping mask in Photoshop, when you make a child layer, its contents (or modification) is only appied to contents of its parent layer.
It may sound simple, but if you think about it longer (I did!), you will be amazed how powerful this concept is.
you can have a photo layer, add child sharpen layer, then add child mask layer to it, so that only part of photo layer is sharpened!
you can add vector layer, add child stroke layer, then add child pixel layer and paint it with brush - only inside the stroke lines!
you can add a mask layer as a child of another layer, and adjust mask layer's opacity so that the part of parent layer is semi-transparent.
did you ever dream about multiple strokes on a layer? Now you can! Simply add 2 or more child stroke layers. (Same for any other modification).
you can group layers and then treat this group like a layer - that is, add child layers!
you can show/hide any layer and its children - which is equivalent of: show/hide layer, enable/disable layer mask, show/hide layer styles, booo.
you can copy/paste (drag/drop) adjustment layers as easy as content layers.
you can open/save layer and its children as separate file (hello smart objects!), and vice versa - combine layers into a new file.
and of course you can always "merge" (apply) children layers into parent layer.
Some quick visual demos (keep in mind - all modifications are reversible and only take a couple of clicks!):
The possibilities are really endless. Now, you can achieve similar results in Photoshop (I know that, I can!), but it takes years of experience, understanding hundreds of unknown terms, and lots of puzzle-solving - which set of tools to use in which order.
Why I think my idea is so cool:
it's very easy to understand and develop. Once you get the idea of layer tree, you can do anything. From the developer point of view, it's as easy as making a Miner game (maybe not SO easy, but hey). There is one function to support: layers. All new features are added as new types of layers. Plugins? Call them layers instead!
it's the ideal of reversive editing. You take the source image, add layers, export as destination image. Any modification can be adjusted, hidden or removed.
it's not DVORAK. The world already is used to Photoshop layers. There is no painful transition, like having to learn new programming language, or changing from QWERTY to DVORAK keyboard.
Thank you for being so patient reading that long. I hope I inspired you and gave you some food for thought. Who knows, maybe one of you will eventually use the ideas above as a base for developing an app that will become next world standard in image editing. Pixelmator, I'm looking at you! :-)