Musings on HTTP/2 and Bundling

Post pobrano z: Musings on HTTP/2 and Bundling

HTTP/2 has been one of my areas of interest. In fact, I’ve written a few articles about it just in the last year. In one of those articles I made this unchecked assertion:

If the user is on HTTP/2: You’ll serve more and smaller assets. You’ll avoid stuff like image sprites, inlined CSS, and scripts, and concatenated style sheets and scripts.

I wasn’t the only one to say this, though, in all fairness to Rachel, she qualifies her assertion with caveats in her article. To be fair, it’s not bad advice in theory. HTTP/2’s multiplexing ability gives us leeway to avoid bundling without suffering the ill effects of head-of-line blocking (something we’re painfully familiar with in HTTP/1 environments). Unraveling some of these HTTP/1-specific optimizations can make development easier, too. In a time when web development seems more complicated than ever, who wouldn’t appreciate a little more simplicity?

As with anything that seems simple in theory, putting something into practice can be a messy affair. As time has progressed, I’ve received great feedback from thoughtful readers on this subject that has made me re-think my unchecked assertions on what practices make the most sense for HTTP/2 environments.

The case against bundling

The debate over unbundling assets for HTTP/2 centers primarily around caching. The premise is if you serve more (and smaller) assets instead of a giant bundle, caching efficiency for return users with primed caches will be better. Makes sense. If one small asset changes and the cache entry for it is invalidated, it will be downloaded again on the next visit. However, if only one tiny part of a bundle changes, the entire giant bundle has to be downloaded again. Not exactly optimal.

Why unbundling could be suboptimal

There are times when unraveling bundles makes sense. For instance, code splitting promotes smaller and more numerous assets that are loaded only for specific parts of a site/app. This makes perfect sense. Rather than loading your site’s entire JS bundle up front, you chunk it out into smaller pieces that you load on demand. This keeps the payloads of individual pages low. It also minimizes parsing time. This is good, because excessive parsing can make for a janky and unpleasant experience as a page paints and becomes interactive, but has not yet not fully loaded.

But there’s a drawback to this we sometimes miss when we split assets too finely: Compression ratios. Generally speaking, smaller assets don’t compress as well as larger ones. In fact, if some assets are too small, some server configurations will avoid compressing them altogether, as there are no practical gains to be made. Let’s look at how well some popular JavaScript libraries compress:

Filename Uncompressed Size Gzip (Ratio %) Brotli (Ratio %)
jquery-ui-1.12.1.min.js 247.72 KB 66.47 KB (26.83%) 55.8 KB (22.53%)
angular-1.6.4.min.js 163.21 KB 57.13 KB (35%) 49.99 KB (30.63%)
react-0.14.3.min.js 118.44 KB 30.62 KB (25.85%) 25.1 KB (21.19%
jquery-3.2.1.min.js 84.63 KB 29.49 KB (34.85%) 26.63 KB (31.45%)
vue-2.3.3.min.js 77.16 KB 28.18 KB (36.52%)
zepto-1.2.0.min.js 25.77 KB 9.57 KB (37.14%)
preact-8.1.0.min.js 7.92 KB 3.31 KB (41.79%) 3.01 KB (38.01%)
rlite-2.0.1.min.js 1.07 KB 0.59 KB (55.14%) 0.5 KB (46.73%)

Sure, this comparison table is overkill, but it illustrates a key point: Large files, as a rule of thumb, tend to yield higher compression ratios than smaller ones. When you split a large bundle into teeny tiny chunks, you won’t get as much benefit from compression.

Of course, there’s more to performance than asset size. In the case of JavaScript, we may want to tip our hand toward smaller page/template-specific files because the initial load of a specific page will be more streamlined with regard to both file size and parse time. Even if those smaller assets don’t compress as well individually. Personally, that would be my inclination if I were building an app. On traditional, synchronous „site”-like experiences, I’m not as inclined to pursue code-splitting.

Yet, there’s more to consider than JavaScript. Take SVG sprites, for example. Where these assets are concerned, bundling appears more sensible. Especially for large sprite sets. I performed a basic test on a very large icon set of 223 icons. In one test, I served a sprited version of the icon set. In the other, I served each icon as individual assets. In the test with the SVG sprite, the total size of the icon set represents just under 10 KB of compressed data. In the test with the unbundled assets, the total size of the same icon set was 115 KB of compressed data. Even with multiplexing, there’s simply no way 115 KB can be served faster than 10 KB on any given connection. The compression doesn’t go far enough on the individualized icons to make up the difference. Technical aside: The SVG images were optimized by SVGO in both tests.

Side note: One astute commenter has pointed out that Firefox dev tools show that in the unsprited test, approximately 38 KB of data was transferred. That could affect how you optimize. Just something to keep in mind.

Browsers that don’t support HTTP/2

Yep, this is a thing. Opera Mini in particular seems to be a holdout in this regard, and depending on your users, this may not be an audience segment to ignore. While around 80% of people globally surf with browsers that can support HTTP/2, that number declines in some corners of the world. Shy of 50% of all users in India, for example, use a browser that can communicate to HTTP/2 servers (according to caniuse, anyway). This is at least the picture for now, and support is trending upward, but we’re a long ways from ubiquitous support for the protocol in browsers.

What happens when a user talks to an HTTP/2 server with a browser that doesn’t support it? The server falls back to HTTP/1. This means you’re back to the old paradigms of performance optimization. So again, do your homework. Check your analytics and see where your users are coming from. Better yet, leverage caniuse.com’s ability to analyze your analytics and see what your audience supports.

The reality check

Would any sane developer architect their front end code to load 223 separate SVG images? I hope not, but nothing really surprises me anymore. In all but the most complex and feature-rich applications, you’d be hard-pressed to find so much iconography. But, it could make more sense for you to coalesce those icons in a sprite and load it up front and reap the benefits of faster rendering on subsequent page navigations.

Which leads me to the inevitable conclusion: In the nooks and crannies of the web performance discipline there are no simple answers, except „do your research”. Rely on analytics to decide if bundling is a good idea for your HTTP/2-driven site. Do you have a lot of users that only go to one or two pages and leave? Maybe don’t waste your time bundling stuff. Do your users navigate deeply throughout your site and spend significant time there? Maybe bundle.

This much is clear to me: If you move your HTTP/1-optimized site to an HTTP/2 host and change nothing in your client-side architecture, it’s not going to be a big deal. So don’t trust blanket statements some web developer writing blog posts (i.e., me). Figure out how your users behave, what optimizations makes the best sense for your situation, and adjust your code accordingly. Good luck!


Cover of Web Performance in Action

Jeremy Wagner is the author of Web Performance in Action, an upcoming title from Manning Publications. Use coupon code sswagner to save 42%.

Check him out on Twitter: @malchata


Musings on HTTP/2 and Bundling is a post from CSS-Tricks

Did CSS get more complicated since the late nineties?

Post pobrano z: Did CSS get more complicated since the late nineties?

Hidde de Vries gathers some of the early thinking about CSS:

There is quite a bit of information on the web about how CSS was designed. Keeping it simple was a core principle. It continued to be — from the early days and the first implementations in the late nineties until current developments now.

The four main design principles listed are fascinating:

  • Authors can specify as much or little as they want
  • It is not a programming language by design
  • They are agnostic as to which medium they are used for
  • It is stream-based

So… did it?

I think lots has changed since the early nineties, but not really things that touch on how we apply CSS to structured markup.

Direct Link to ArticlePermalink


Did CSS get more complicated since the late nineties? is a post from CSS-Tricks

Let’s say you wanna open source a little thing…

Post pobrano z: Let’s say you wanna open source a little thing…

Let’s say you’ve written a super handy little bit of JavaScript. Nice! Well done, you. Surely, the world can benefit from this. A handful of people, at least. No need to keep this locked up. You’ve benefitted from open source tremendously in your career. This is the perfect opportunity to give back!

Let’s do this.

You’re going to need to chuck it into a GitHub repo. That’s like table stakes for open source. This is where people can find it, link to it, see the code, and all that. It’s a place you can push changes to if you need to.

You’ll need to pick a license for it. If the point of this is „giving back” you really do need to, otherwise, it’s essentially like you have the exclusive copyright of it. It’s somewhat counter-intuitive, but picking a license opens up usage, rather than tightening it.

You’ll need to put a README in there. As amazingly self-documenting you think your code is, it isn’t. You’ll need some plain-language writing in there to explain what your thing is and does. Usage samples are vital.

You’ll probably wanna chuck some demos in there, too. Maybe a whole `/demos/` directory so the proof can be in the pudding.

While you’ve made some demos, you might as well puts some tests in there. Those go hand-in-hand. Tests give people who might use your thing some peace of mind that it’s going to work and that as an author you care about making sure it does. If you plan to keep your thing updated, tests will ensure you don’t break things as you make changes.

Speaking of people using your thing… just how are they going to do that? You probably can’t just leave a raw function theThing () in `the-thing.js`! This isn’t the 1800’s, they’ll tell you. You didn’t even wrap an IIFE around it?! You should have at least made it a singleton.

People are going to want to const theThing = require("the-thing.js"); that sucker. That’s the CommonJS format, which seems reasonable. But that’s kinda more for Node.js than the browser, so it also seems reasonable to use define() and return a function, otherwise known as AMD. Fortunatly there is UMD, which is like both of those at the same time.

Wait wait wait. ES6 has now firmly arrived and it has its own module format. People are for sure going to want to import { theThing } from './the-thing.js';, which means you’re going to need to export function theThing() { }.

So what should you do here? Heck if I know. I’m sure someone smart will say something in the comments.

Whatever you decide though, you’ll probably separate that „module” concern away from your authored code. Perhaps a build process can help get all that together for you. Perhaps you can offer your thing in all the different module formats, so everybody is happy. What do you use for that build process? Grunt? Gulp? Too old? The hip thing these days is an npm script, which is just some terminal commands put into a `package.json` file.

While your build processing, you might as well have that thing run your tests. You also might as well create an uglified version. Every library has a `the-thing.min.js`, right? You might as well put all that auto generated stuff into a `/dist/` folder. Maybe you’ll even be super hip and not check that into the repo. If you want this thing, you grab the repo and build it yourself!

Still, you do want people to use this thing. Having the public repo isn’t enough, it’s also going to need to go on npm, which is a whole different site and world. Hopefully, you’ve done some naming research early, as you’ll need to name your package and that must be unique. There is a variety of other stuff to know here too, like making sure the repo is clean and you’ve ignored things you don’t want everyone to download with the package.

Wait what about Yarn? Isn’t that the new npm or something? You might want to publish there too. Some folks are hanging onto Bower as well, so you might wanna make your thing work there too.

OK! Done! Better take a quick nap and get ready for the demands to start rolling in on the issues board!

Just kidding everything will be fine.


Let’s say you wanna open source a little thing… is a post from CSS-Tricks

How to Draw a Sloth Step by Step

Post pobrano z: How to Draw a Sloth Step by Step

Final product image
What You’ll Be Creating

Sloths
are amazing creatures, so different from everything we know. The seem
to have a very chill attitude towards life, and they’re definitely not
lazy—they just don’t see the need to hurry! Sloths are also unbelievably
cute, so we’re going to draw one today. It will be a simple
illustration perfect for beginners, and later you can use it to create a
colorful vector illustration with Nataliya Dolotko!

1. How to Draw a Sloth’s Body

Step 1

Our sloth will be hanging from a tree branch, and its back will be neatly curved. So start the drawing with this clear curve.

sloth body curve

Step 2

To draw a uniform curve of the body, we may feel it with circles. First a big circle…

sloth body shape

… then a smaller one…

sloth body circles

… an even smaller one…

sloth body drawing

… and a similar one on top for the head.

sloth sketch head

Step 3

You can now outline the body.

sloth body sketch

2. How to Draw a Sloth’s Legs

Step 1

Draw the limbs that are the closest to us first. To keep the illustration simple, draw them as simple curves.

sloth back leg
sloth arm

Step 2

Draw a tree branch above the sloth. Feel free to use a ruler for this, but it’s not necessary.

sloth hanging branch

Step 3

Draw the foot holding the branch.

sloth foot

Step 4

Draw the outline of the leg going from the foot towards the body.

sloth leg curve
sloth leg full

Step 5

Draw the hand—it will be more rounded than the foot.

sloth rounded hand

Step 6

Use the same technique as before to outline the arm.

sloth arm curve
sloth arm complete

Step 7

There’s another pair of limbs we need to draw. It should be easy—just mirror the curves:

sloth other leg curve
sloth other arm curve

Step 8

Make the other leg complete the same way as before:

sloth other foot
sloth other leg  shape
sloth other leg complete

Step 9

And another arm, too:

sloth other hand
sloth other arm

Step 10

Finally, add the long claws holding the branch.

sloth claws direction
sloth claws full

3. How to Draw a Sloth’s Face

Step 1

Draw the outline of the sloth’s flat face.

sloth face shape

Step 2

Add some basic guidelines to see the proportions better.

sloth vertical guide line
sloth horizontal guide line

Step 3

Draw the circle in the lower half—this will be the muzzle.

sloth muzzle

Step 4

Draw the smile across the muzzle.

sloth smile

Step 5

Add some details to the smile.

sloth smile detail

Step 6

Draw the nose.

sloth nose
sloth nose bridge
sloth noseholes

Step 7

Draw the eyes.

sloth eyes shape
sloth eye patches
sloth eyes

Step 8

Draw the dark pattern along the face.

sloth face pattern

Step 9

Draw the cute fringe on the forehead.

sloth face fringe

4. How to Finish the Drawing of a Sloth

We’re
going to draw the final lines now. If you’re drawing traditionally, use
a darker tool for it, or place a new sheet of paper over the sketch.

Step 1

Outline parts of the limbs, leaving space for other outlines.

sloth limbs outline

Step 2

Outline the nose.

sloth nose outline

Step 3

Draw the details of the eyes. First, plan the shine dots…

sloth eyes shine

… then fill everything outside of the shine dots…

sloth dark eyes

… and slightly darken the lower dots (they come from reflected light).

sloth reflect light eyes

Step 4

Outline the cute mouth.

sloth cute mouth

Step 5

Add the „mask”.

sloth mask

Step 6

Outline the whole face.

sloth face outline
sloth fringe outline

Step 7

Outline the claws. Try to make them all very similar.

sloth claws outline

Step 8

Outline the whole body and the branch.

sloth body outline
sloth branch outline
sloth full outline

Step 9

Finally, thicken some of the lines to make the drawing visually more interesting without any colors or shading.

sloth fancy lines

So Cute!

Good
job! You can now take your drawing and turn it into a vector
illustration. And if you’re interested in other tutorials like this,
check one of these:

how to draw cute sloth step by step

IKEA Lion Man – Relax into greatness

Post pobrano z: IKEA Lion Man – Relax into greatness

IKEA UK’s latest advertising campaign features Lion Man, a symbol of the importance of relaxing and recharging in one’s living room so we can go on to do great things. Based on the fact that lions spend up to 18 hours a day at rest, the campaign follows the story of a Lion Man as he recharges in his living room before springing to life and revealing himself to be a father in costume preparing for his child’s party. The IKEA Lion Man campaign aims to highlight the importance of recharging our bodies and minds and inspire people to relax more, by celebrating the living room as the one room in the home where we can unashamedly rest and relax. The online film connects viewers with the Wonderful Everyday site ikea.co.uk/wonderfuleveryday .

IKEA Lion Man

Shot in a style that parodies a wildlife documentary, the film follows the Lion Man relaxing languidly in his living room. We see him stretching on a cushion-filled sofa in front of the TV, then reading a book on an armchair, sprawling on a rug before peaceful yoga practice. The Lion Man is constantly at rest. But as he naps and light fades, he hears a wild rumble outside in a faux dreamlike sequence. We’re given a visual cue of an antelope, perhaps the Lion Man’s prey. Fully recharged, the Lion Man springs to the ready: it’s time for action! The door flies open and he is greeted by the energetic stampede of his daughter and her friends at her birthday party. The recognisable voice of Rikard Wolf then encourages the audience to “relax into greatness”.

Laurent Tiersen, IKEA UK and Ireland Marketing Manager, said, “Modern lives often leave us with the feeling that we should always be on the go, making enjoying downtime feel a bit indulgent. We work around the clock, consuming information 24/7 and are ‘always on’ which puts a toll on us all. We’ve all forgotten how to relax, especially in the living room.

Our hope is that “Lion Man” – the latest instalment of the Wonderful Everyday campaign – helps and inspires the nation to reclaim their living rooms. Challenging everyone to think of it as a personal sanctuary to relax and recharge – because when you feel fresh, great things will follow.”

Created by Mother London, the campaign leads in press, TV, cinema, digital and outdoor media, with additional filmic content optimised for social and mobile. The campaign reaches its peak with a 60” online and cinema film along with 60” and 20” TVC across the UK and Ireland on 15th July, before going live across print, digital and outdoor. The campaign has full support of PR, social and CRM.

IKEA Lion Man
IKEA Lion Man
IKEA Lion Man

IKEA Lion Man Credits

The IKEA Lion Man campaign was developed at Mother London by executive creative directors Hermeti Balarin and Ana Balarin, creatives Roberto Kilciauskas and Pedro Rosa, and agency producer Carol Oakley.

Filming was shot by Us directors Chris Barrett and Luke Taylor via Academy Films with director of photography Patrick Duroux, executive producer Lizzie Gower, producer Lucy Gossage, production designer Drogo Michie, wardrobe artist Rebecca Hale, and Lion Man costume artist Andy Gent at AMS.

Editor was Bill Smedley at Work Post.

Post production was done at MPC by colourist Jean-Clément Soret.

Sound was produced by Sam Ashwell at 750mph.

Music is “By The Sleepy Lagoon”, by Eric Coates, with additional production by Paul Sumpter.

Burger King: Chicken Parm Family Dinner

Post pobrano z: Burger King: Chicken Parm Family Dinner

Media
Burger King

Advertising Agency:Code and Theory, USA
Associate Creative Director:Mike Latshaw
Visual Designer:Riley Walker
Photographer:Stas May
Senior Social Strategist:Jessie Jo Blalock
Community Manager:Hallie Martin
Group Account Director:Jill Bernstein
Content Producer:Zachary Fleming
Executive Producer:Lyndsay Elkins, Andrea Theodore, Jonathan Schwartz
Producer:Shaina Thomas
Partner:Dotty Giordano
Director Of Client Services:Dotty Giordano
Production Company:KAM Productions
Director:Carrie Stett
Managing Partner:Andrea Theodore, Jonathan Schwartz
Story:Melissa Fornabaio
Post Producer:Melissa Fornabaio
Dp:Eddie Belaval
Editor:David Arnold
Mixer:David Arnold
Assistant Editor:Zac Grant
2d Artist:Zac Grant

How to Create an Enchanted Rose Photo Manipulation in Adobe Photoshop

Post pobrano z: How to Create an Enchanted Rose Photo Manipulation in Adobe Photoshop

Final product image
What You’ll Be Creating

Let’s create a magical photo manipulation using basic tools in Adobe Photoshop.

In today’s tutorial, we’ll create an enchanted rose inspired by the classic Disney movie Beauty and the Beast. I’ll show you how to build the entire scene from scratch just by keeping an eye out for the right stocks.

For more inspiration, find incredible Magic-inspired Graphics on Envato Market.

Tutorial Assets

The following assets were used in the production of this tutorial:

How to Find the Right Stocks

To create this scene, I did a basic search on Google and Pinterest for enchanted rose images. Taking a few notes in the beginning is a good way to have a game plan before you attempt this manipulation. Here are some important ideas to keep in mind for a composition that reflects the original Disney movie.

  1. The enchanted rose is often in front of a large window.
  2. The window has stained glass panels reminiscent of the time period.
  3. The table used to hold the rose is made of stone.
  4. The glass case can work with or without a base.
  5. The rose sparkles with magic from the enchantment spell.

Just knowing these few tidbits helps me understand the kind of stocks I need to choose. Bookmark plenty of alternative images to experiment with what works best.

Stock photos for a photo manipulation

Now let’s move on to the manipulation!

1. How to Set Up the Stained Glass Window

Step 1

Open your Stained Glass Window reference in Adobe Photoshop. We’ll be using its normal dimension size (1280 x 1280 pixels) to build this magical scene.

Stained Glass Window Reference

Since the window is a little crooked, let’s straighten it out. Control-T to Free Transform the window, Rotating the window until it’s straight. Then adjust the Scale and Perspective so that it’s much taller and the top of the window stretches a little outside of the canvas.

Rescale the window

Control-J to create a Duplicate of the window. Adjust the size of the duplicate so that there’s more wall space on the left and right sides of the composition. Since the window is just an accessory to this composition, we need to make sure it’s not placed too far forward in the scene.

Adjust the window more

Don’t worry if there’s a little excess window from the image underneath it—we’ll cover that later!

Step 2

Now blur the window to create depth of field. Go to Filter > Blur Gallery > Field Blur, and add a Blur of 5 pixels.

Blur the window

Desaturate the blurred image. Go to Image > Adjustments > Hue & Saturation. Lower the Saturation to -49.

Desaturate the Window

Step 3

Before we add more elements to the scene, let’s blur the window again. Go to Filter > Blur Gallery > Field Blur. Now add a blur of 8 pixels, but this time make sure that the Light Bokeh is set to 25%.

Blur the window and add light bokeh

Finish the window adjustments by applying some color. With the blurred image selected, go to Image > Adjustments > Color Lookup. Set the 3DLUT File to FuturisticBleak.3DL.

Add a Color Lookup Adjustment Layer

2. How to Add the Table

Step 1

Adding the table is quite simple. Just use the Polygonal Lasso Tool (L) to extract it from the Stone Table reference. Then Copy and Paste it onto a New Layer above the background.

Add the stone table

To clean up the edges, add a Layer Mask to the table. Select the mask and Fill it with black using the Paint Bucket Tool (G). Then use a Hard Round Brush with 100% Hardness to paint white onto the areas where you want to reveal the table.

Also make sure any excess leaves and debris are removed from its surface by using the Clone Stamp Tool (S).

Add a layer mask to the table

Step 2

Now desaturate the table. Select the layer and go to Image > Adjustments > Hue & Saturation. Lower the Saturation to -75.

Desaturate the table

Step 3

Create a New Layer and Fill it with gray #b9b9b9 using the Paint Bucket Tool (G). Right-click to set this layer as a Clipping Mask to the table. Then set the Layer Blend Mode to Multiply.

Clip a layer fill to the table

Clip a New Adjustment Layer of Curves above the layer fill to adjust the lighting even further. Bring down the curve for the RGB Channel slightly to darken the table.

Add a curves adjustment layer

3. How to Create the Glass Case

Step 1

Already the scene is starting to come together! How exciting!

Now let’s create the glass case from scratch. To do this, first extract the bottom of this Cake Stand with the Polygonal Lasso Tool (L).

Extract the cake base

Adjust the size and perspective with the Free Transform Tool (Control-T). Then use the Eraser Tool (E) to clean up the edges of the base.

Add the cake base

Step 2

Select the Ellipse Tool (U) and create a white circle with No Stroke at the top of the base.

Add a circle to the base

Right-click the ellipse layer and go to Blending Options. Apply a reflected gold Linear Gradient Overlay with the following settings and colors:

  • Dark gold: #967242
  • Light gold: #bd9053
Add a gold overlay

Step 3

Merge the shape and cake stand layers together. Control-T to adjust the size of the stand, making it slightly larger before placing it in the center of the table. Then Right-click to go to Blending Options again, this time adding a Drop Shadow with the following settings:

Add a drop shadow to the case base

Step 4

Change the gold base to a rich brown color. Do this by setting a New Adjustment Layer of Hue & Saturation as a Clipping Mask to the cake stand. Adjust the settings to the following numbers:

  • Hue: -25
  • Saturation: -41
  • Lightness: -68
Change the gold base to brown

Step 5

Time for the dome glass details! Open your Wine Glass reference in Photoshop. Use the Magic Wand Tool (W) to select the background, and then hit Delete to remove it. Do the same for the center of the glass, making sure that the shine stays in place.

Once you’re finished, Copy and Paste the image into your composition and go to Edit > Transform > Flip Vertical. Adjust the shape of the glass with the Free Transform Tool (Control-T) and fit it onto the brown stand.

Add the wine glass

Continue adjusting the shape with the Free Transform Tool’s Warp and Scale options until you’re happy with the result. Try to make it as close to the movie’s dome shape as possible. Add a Layer Mask to this layer and paint black onto it with a Hard Round Brush to remove any excess glass.

Add a layer mask to the glass case

Now use the Eraser Tool (E) to erase the bottom of the glass as well as any harsh edges. Try to make the case seem as realistic as possible.

Erase harsh edges on the glass case

Finish the case by using the Ellipse Tool (U) to create an ellipse at the bottom of the case with a white Stroke and No Fill. Right-click the shape layer to go to Blending Options, adding a brown #372e2b Drop Shadow with the following settings:

Add a circle and drop shadow

4. How to Create the Enchanted Rose

Step 1

To create the enchanted rose, we’ll first add a little color to the glass case. Create a New Layer below the glass layers but above the stand layer.

With a Soft Round Brush, paint soft shades of green #0e624f and blue #2b809a onto the case, and then set the Layer Blend Mode to Divide. Lower the Opacity to 70%.

Add glow to the glass case

Here is how the layers should appear.

Glass and Rose layers

Step 2

You may notice that the original enchanted rose sits at an angle in the glass. So before we add our own rose to the case, we need to adjust its shape. Open your Pink Rose reference in Photoshop. Use the Magic Wand Tool (W) to select the white background and hit Delete to remove it.

Dissect the rose using the Polygonal Lasso Tool (L). Create individual selections around the rose, stem, and leaves. Copy and Paste each component onto its own layer, and then Rotate each section with the Free Transform Tool (Control-T).

Dissect the rose reference

Here is a before and after comparison. Make the top of the rose seem much larger than the stem. Rotate it at a slight angle before removing any excess leaves. Then erase the end of the stem with the Eraser Tool (E).

Rose before and after adjustment

Now that the rose is all set, Copy and Paste it onto a New Layer underneath the glass layers. Adjust the size so that it fits within the glass perfectly.

Add the rose

Step 3

Set a New Adjustment Layer of Hue & Saturation as a Clipping Mask to the rose. Lower the Saturation to -50. 

Desaturate the rose with Hue and Saturation

Step 4

Let’s add some color! Set another New Layer as a Clipping Mask to the rose. Use a Hard Round Brush to paint red #811522 all over the rose. Then set the Layer Blend Mode to Color Burn and the Opacity to 80%.

Color the enchanted rose red

Clip a New Adjustment Layer of Color Lookup to the rose to modify the colors. Set the 3DLUT File to 2Strip.look, and then set the Layer Blend Mode to Multiply and the Opacity to 70%.

Adjust the rose color with color lookup

Step 5

Don’t forget to add the handle to the top of the glass dome! Extract the top portion from this Glass Top reference and Copy and Paste it into the scene. Use a combination of the Free Transform Tool (Control-T) and a Layer Mask to make the shape rounder.

Then go to Image > Adjustments > Hue and Saturation, and lower the Saturation to -64.

Add the glass handle

Step 6

Cover the bottom of the glass base with rose petals. First open the Rose Petal reference in Photoshop and use the Magic Wand Tool (W) to select and Delete the white background.

Remove the white background

Select only a few of the petals with the Polygonal Lasso Tool (L), and then Copy and Paste them onto a New Layer underneath the glass.

Create movement by making two copies of one of the rose petals. Position them as though they are floating down the case.

Add the rose petals

Now create a New Layer underneath the petals layer and set it to Multiply. Paint red #890100 shadow underneath the rose petals and don’t forget to deepen the main rose. Use a Soft Round Brush to blend the shadows well.

Paint shadow onto the rose

5. How to Adjust the Final Colors and Lighting

Step 1

Almost done! To make the scene as realistic as possible, we’ll need to create a harmonious lighting and color scheme.

First create a New Layer above all the others. Use a Soft Round Brush (at 10-40% Opacity) to paint light gray #c7c4c1 mist around the right and left sides of the case. Lower the Opacity of the layer to 25%.

Paint mist around the case

Create another New Layer and set it to Multiply. Use a Soft Round Brush (at 30-70% Opacity) to paint medium gray #6a6a6a around the edges of the scene. This will create more focus on the rose while adding a nice vignette effect.

Create a quick vignette effect

Step 2

Go to Layer > New Adjustment Layer > Color Balance. Change the settings for the Shadows, Midtones, and Highlights to make the overall scene more blue.

Color balance settings

Here is the result once you’re through.

Color Balance result

Step 3

Create a New Layer above the last adjustment and set it to Overlay. Use a Hard Round Brush to paint solid pink #d8c7de in the middle of the canvas. Lower the Opacity to 32%.

Paint pink onto the scene

To brighten the rose petals with more color, set a New Layer to Overlay. Use a Soft Round Brush to paint pink #d85670 on the petals for a bold effect. Lower the Opacity to 83%.

Paint pink onto the rose petals

Step 4

For even more color, create a New Layer set to Linear Light. Paint a bright pink color #c93e96 all over the rose and rose petals. Lower the Opacity to 11%.

Paint more bright pink onto the rose

Step 5

To create a sense of atmosphere, we’ll be applying dust and sparkles to the composition. So load your Nebula Brushes and create a New Layer. Using Nebula Brush 7, click once to apply the brush, making sure the Foreground Color is set to white. Lower the Opacity if needed.

Apply the Nebula Brushes

Step 6

Then load your Lens Flare and Star Brushes. Use a combination of Star Brushes and Flare Brushes to paint white lens flares at the top of the glass case and a few star bursts within it. This will help the scene appear as though there’s light coming in from the window.

Add lens flares to the composition

Set a New Layer to Overlay and use a Soft Round Brush to paint yellow #d9dfcf highlights onto the table and case. Change the Brush Hardness to 100% to add a few cleaner lines of highlight around the table’s ornate details.

Paint highlights onto the table

Step 7

Create a New Layer and use it to paint crisp white highlights on the glass, case, and rose. Add white dots to the air to show how some dust particles are catching light.

Take this opportunity to clean up the scene as much as possible.

Paint white highlights onto the rose and case

Step 8

The majority of our editing is now complete! All we have left to do is add a few more color adjustments. Add a New Adjustment Layer for Curves. Adjust the curves for the RGB, Blue, and Green Channels to balance the lighting. Lower the Opacity to 68%.

Add a new curves adjustment layer

Next, add a New Adjustment Layer for Brightness & Contrast. Adjust the Brightness to 9 and the Contrast to 8.

Add a Brightness and Contrast Adjustment

Finally, add one more Adjustment Layer for Color Balance. Change the settings for the Midtones and Highlights to the following numbers:

Color Balance settings

The result should have a slightly purple hue to mimic the colors from the movie. This is technically the end of the manipulation, but I’ll sharpen the image even further in the next steps.

Result after color balance

6. How to Sharpen Your Manipulation

For more visual impact, consider sharpening your photo manipulations for the final step. Merge all the layers together. Hold Control-J to Duplicate the merged layer.

With the merged copy selected, go to Filter > Other > High Pass, setting the Radius to 2 pixels. Then set the Layer Blend Mode to Overlay.

High pass filter to sharpen

That’s it! Check out the final result below.

Congratulations! You’re All Done!

You can create Disney magic using a few well-placed images in Adobe Photoshop. Explore the possibilities with fantastic settings like Adjustment Layers, Blend Modes, and more.

I hope you’ve enjoyed this tutorial! Feel free to add your comments and share your results with us below.

For more fun photo manipulations, check out these great tutorials:

Enchanted Rose Photo Manipulation Photoshop Tutorial Melody Nieves