6.7.  Encoding

The Encoding submenu contains commands which let you change the encoding of the image. These options affect the precision and channel encoding used for storing the image in RAM during processing.

6.7.1. Accès au sous-menu

You can access this submenu from the main menu through ImageEncoding.

6.7.2. The Contents of the « Encoding » Submenu

The Encoding submenu is divided into two parts: precision and channel encoding.


The precision at which image data is stored is a function of the bit depth (8-bit vs 16-bit vs 32-bit) and whether the data is stored as integer data or floating point data. The following choices are available:

  1. Integer precision options

    • Entier 8 bits

      [Note] Note

      When choosing to convert an image which has a 32-bit floating point precision to 8-bit integer, a conversion dialog will open that will ask you to choose dithering settings.

    • Entier 16 bits

    • Entier 32 bits

  2. Options de précision en virgule flottante

    • Virgule flottante 16 bits

    • Virgule flottante 32 bits

Channel Encoding (Gamma)

The Encoding menu also allows you to choose a channel encoding for the image data (sometimes referenced as gamma). Currently there are two choices:

  • Lumière linéaire, qui code les données de canal en utilisant le gamma linéaire TRC.

  • Non-linear, which encodes the channel data in non-linear gamma using the chosen color profile for the image.

6.7.3. Choix de la précision de l’image et du codage des canaux

[Note] Note

Regardless of which options you choose in the Encoding menu, all internal processing is done at 32-bit floating point precision, and most editing operations are done using Linear light channel encoding.

Which Encoding options should you choose? In a nutshell:

  1. Pour tirer peinement avantage du traitement interne en virgule flottante 32 bits de GIMP-2.10, choisissez la précision en virgule flottante 32 bits et le codage des canaux Lumière linéaire.

  2. Si vous effectuez les modifications sur une machine pauvre en RAM, ou si vous modifiez de très grosses images et piles de calques, envisagez d’utiliser une précision en virgule flottante 16 bits ou en entiers.

  3. If you want to take advantage of high bit depth image editing, but you don't want to deal with floating point channel values, then use 16-bit integer precision.

  4. When soft-proofing an image, switch to Non-linear channel encoding to avoid certain problems with soft-proofing a linear gamma image using Little CMS.

  5. On a less powerful machine with a limited amount of RAM, consider using 8-bit integer precision, in which case also choose the Non-linear channel encoding (which is the default for 8-bit). At 8-bit precision, if you choose the Linear light channel encoding, your image will have horribly posterized shadows.

6.7.4. Autres informations sur les options de Précision

  1. Choosing the bit depth (8-bit vs 16-bit vs 32-bit):

    • La profondeur de bits d’une image définit la précision disponible lors du traitement de fichiers d’image. De façon générale, de grandes profondeurs de bits donnent plus de précision.

    • La profondeur de bits d’une image détermine partiellement la quantité de mémoire vive requise lors du traitement. Plus la profondeur de bits est grande et plus de mémoire vive est nécessaire lors du traitement de l’image. D’autres facteurs en rapport sont la taille des calques de l’image et le nombre de calques dans la pile des calques

  2. Choix entre précision en entiers et précision en virgule flottante :

    • Floating point precision is required for taking full advantage of high bit depth using GIMP's internal 32-bit floating point processing. Floating point precision allows for the generation and use of channel values that fall outside the display-referred range from 0.0 ("display black") to 1.0 ("display white"), thus making possible very useful editing possibilities such as unbounded ICC profile conversions and High Dynamic Range scene-referred editing operations.

    • Unlike floating point precision, integer precision cannot store channel values outside the display range. So choosing an integer precision from the Encoding menu means that all floating point channel values produced during processing are clipped to fit within the equivalent floating point range between 0.0 and 1.0 inclusively:

      • Les valeurs en entiers 8 bits sont rognées à l’intervalle 0-255.

      • Les valeurs en entiers 16 bits sont rognées à l’intervalle 0-35.535.

      • Les valeurs en entiers 32 bits sont rognées à l’intervalle 0-4.294.967.295.

    • At any given bit depth, all things being equal integer precision is more precise than floating point precision. So 16-bit integer precision is more precise than 16-bit floating point precision, and 32-bit integer precision is more precise than 32-bit floating point precision. However, in GIMP you don't get more precision by choosing 32-bit integer over 32-bit floating point: GIMP still does all internal processing using 32-bit floating point precision even if you choose 32-bit integer precision in the Encoding menu. Remember, the Precision menu choices only determine how the image information is held in RAM.

    • À toute profondeur de bits donnée, les précisions en entiers et en virgule flottante utilisent en gros la même quantité de mémoire vive pour les calculs internes pendant le traitement de l’image, et nécessitent également environ la même quantité d’espace disque lors de l’enregistrement d’une image sur disque.

  3. Choosing between Linear light and Non-linear channel encoding:

    • En précision 8 bits, si vous choisissez le codage des canaux Lumière linéaire, les ombres de l’image seront affreusement postérisées. Donc, n’utilisez pas Lumière linéaire, à moins que vous ne choisissiez aussi une grande profondeur de bits.

    • When soft-proofing, currently the gamut check will not return correct results if the image is at Linear light precision. So change to Non-linear before activating soft-proofing.

    • Other than the fact that Linear light channel encoding is not suitable for 8-bit editing or for soft-proofing, from a user perspective the channel encoding you choose in the Precision menu won't have much effect on your workflow:

      • Currently if you choose "Linear light", then linear gamma channel values are displayed in the "pixel" values when using the Color Picker Tool, Sample Points, and Pointer dialogs. If you choose "Non-linear", then perceptually uniform channel values are displayed instead.

      • Currently the channel encoding that you choose makes a difference in the wrong colors that you might see if you check Section 6.9, « Use sRGB Profile » and your image isn't already in one of the GIMP built-in sRGB color spaces (but with either channel encoding choice, the colors are still wrong).

      • The only other way in which the channel encoding chosen in the Encoding menu might affect your workflow, has to do with the effects of using the "Gamma hack" found in the Advanced Color Options.

6.7.5. The Image Encoding Conversion Dialog

For most precision conversions this dialog will only ask how Gamma should be set. However, for conversion from 32-bit float precision to 8-bit integer, the below dialog will be shown that also asks for Dithering.

Figure 16.60.  The « Precision » conversion dialog for 32-bit float to 8-bit integer

The « Precision » conversion dialog for 32-bit float to 8-bit integer


The Gamma choices are explained in the Channel Encoding options.


When reducing the precision from 32-bit floating point to 8-bit integer, you will lose some details. This can cause color banding, where there is an obvious jump from one color to another where there shouldn't be. Using dithering can be a way to reduce this. Dithering is a way of adding noise to an image to prevent banding and other unwanted patterns. The different dithering methods use different ways to add the noise.

There are three Dithering settings: for normal Layers, Text Layers, and Channels and Masks. For each you can set the type of dithering to use. The different dithering modes are explained in the Dithering Method option of the Dither filter.

In general, you probably won't use dithering for Text layers, since that will cause the text information to be lost, meaning it becomes a normal layer. I would first try conversion without any dithering, and if there are any noticeable artifacts, you can try using dithering on normal layers.