1
0
mirror of https://github.com/danbee/danbarber.me synced 2025-03-04 08:59:10 +00:00

Add optimising web images post

This commit is contained in:
Daniel Barber 2016-02-23 11:59:48 +00:00
parent 6170d22811
commit c4d1979ff3
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
3 changed files with 70 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

View File

@ -0,0 +1,70 @@
---
layout: post
title: "The Complete Guide to Optimising Web Images"
date: 2016-02-23T11:59:41+00:00
categories: [web design, images]
---
Optimising images for your website can be a bit of a black art, but it's well worth doing as the bandwidth savings can be large. It will also make a big difference to the speed at which your site loads.
#### Why?
These days many of us have access to very fast broadband connections (we have a 100Mb/s connection here at thoughtbot London) but not everybody has access to this sort of connection. Many people are still stuck on relatively slow ADSL connections that run at no more than 2Mb/s or so.
Mobile connections have come a long way in recent years, but the variability of speed is even worse than wired connections. 4G can be fast, but in areas with high contention or in areas where there is no 3G/4G connections can be slow as mud.
Whatever the speed of the connection it's worth optimising your images as studies (citation?) have shown that visitors are way more likely to abandon your site if it takes more than a few seconds to load. Also, even fast broadband connections often have data caps.
<!-- more -->
#### Size
The first thing to do is make sure the pixel dimensions of the image are appropriate. Browsers are much better than they used to be at resizing images as they are rendered, but it is a waste of bandwidth to be sending an image that is bigger than the size it ends up at.
The context in which the image is displayed should inform the size as well. For example, a full width background image without much detail may work just as well if sized a bit smaller and this is an opportunity to save some bandwidth. Conversely a full size product shot should probably be sized such that it retains plenty of detail.
Sometimes it is appropriate to send an image that is bigger than the size it will be rendered. For example, you might have a 2x version of a logo that is intended for HiDPI/Retina displays, and the file size may not be significantly large that it's worth rendering a 1x version as well and adding the complexity needed to deal with swapping the images.
#### Format
So you've finished working on your image, and made sure it's the right size. What format do you choose? Well, that depends on the kind of image.
There are number of choices when it comes to image formats that work on the web but the only two you really need to worry about right now are JPEG and PNG.
The JPEG file image format was created by the Joint Photographic Experts Group. This should give you a clue as to the kind of images it was intended to store. It uses efficient lossy compression for storing photographic images, as the artefacts that result from the compression blend well into photographs with detailed non-uniform textures. These artefacts makes it a poor choice for storing graphic images and logos however. Because the compression is lossy it means that you will lose information in the image which cannot be recovered. This means that you should keep a master copy of your image and only export to JPEG when you are ready to publish it to the web.
The PNG format was designed as a replacement for the then patent encumbered GIF format. It is a lossless format, able to store images in a variety of colour depths, with either 1 bit or 8 bit alpha transparency. This makes it ideal for storing graphic images with strong lines and flat areas of colour. It is also very good at pristinely storing photographs, but because it's lossless, the resulting file sizes end up being unwieldy for web use so it's better to use JPEG.
#### Optimising JPEG
When saving your images for the web it is usually best to use the "Web Export..." feature of your image editor. I'll be using Photoshop in my examples, but most other similar apps have this feature.
<figure style="margin-left: -5.6%; margin-right: -5.7%;">
{% image blog/the-complete-guide-to-optimising-web-images/web-export.png alt:"Photoshop's web export dialog box" class:"no-border" %}
<figcaption>Photoshop's Web Export dialogue box</figcaption>
</figure>
The main control you need to worry about here is the "Quality" slider. This adjusts the amount of compression applied to the image and will affect the overall quality. Try playing with this control to get a feel for how it affects the final image. You will also see how it affects the file size of the image (shown at the bottom). 65-75% is generally a good starting point, but you may be able to get away with a lower value for certain kinds of image. Conversely you may have to set it higher to get a result you are happy with. Use your judgement here.
#### Optimising PNG
There's a bit more to think about when saving a PNG file. PNG files can store images in a variety of [colour depths](https://en.wikipedia.org/wiki/Color_depth) and with 1-bit transparency or an 8-bit [alpha channel](https://en.wikipedia.org/wiki/Alpha_compositing).
The first thing you need to decide when creating your PNG file is the target colour depth. Complex images could potentially require the full 24-bit, but many images -- particularly simple images like logos -- will work well as 8-bit paletted images, and will be a good deal smaller too.
Most image editing applications will only let you export a PNG file with an 8-bit alpha layer if you select 24-bit colour. This is a limitation of the application and not the format. You can use [ImageAlpha](http://pngmini.com) (OS X) or [PNGoo](http://pngquant.org/PNGoo.0.1.1.zip) (Windows) to reduce a 32-bit RGBA image down to an 8-bit paletted image while retaining the alpha transparency. Both of these tools use [pngquant](http://pngquant.org) to do the conversion. Simple images can often be reduced to 32 or 16 distinct colours, offering further savings!
<figure style="margin-left: -5.4%; margin-right: -5.5%;">
{% image blog/the-complete-guide-to-optimising-web-images/imagealpha.png alt:"ImageAlpha on OS X" class:"no-border" %}
<figcaption>ImageAlpha on OS X</figcaption>
</figure>
There are some useful tools to enable you to further compress PNG images:
**ImageOptim**: An OS X application that will run your images through various lossless compression tools. OptiPNG, PNGCrush, and Gifsicle are some of the tools that it will use to strip and crush your images down in size without losing quality. The savings depend on the image you are compressing but can be anything from 10% to 75% of the original size. ImageOptim will also work with JPG images but the savings are not usually that great.
*[ADSL]: Asymmetric Digital Subscriber Line
*[JPEG]: Joint Photographic Expert Group
*[GIF]: Graphics Interchange Format
*[PNG]: Portable Network Graphic
*[RGBA]: Red Green Blue Alpha