Comment fonctionne un algorithme de pixelisation d’image ?

Illustration avant et après pixelisation d’une image

La pixelisation : un effet simple… en apparence

Visages masqués à la télévision, plaques d’immatriculation floutées sur Google Street View, photos transformées en style rétro 8-bit… La pixelisation est partout.

Pourtant, peu de gens savent réellement comment elle fonctionne. Beaucoup pensent qu’il s’agit d’un simple flou. En réalité, c’est tout l’inverse.

La pixelisation repose sur un principe volontairement radical : supprimer les détails pour ne garder que de gros blocs de couleur bien visibles. C’est cette brutalité qui la rend à la fois efficace pour protéger la vie privée et intéressante sur le plan créatif.

Le principe expliqué simplement

Un algorithme de pixelisation d’image fait en réalité deux choses très simples :

  1. Il réduit fortement la qualité de l’image, comme si on la compressait à l’extrême.
  2. Il agrandit ensuite cette version dégradée sans essayer de la lisser.

Résultat : chaque petit pixel d’origine devient un gros carré bien net à l’écran. On appelle souvent ces carrés des super-pixels.

Important :
Le flou rend une image floue progressivement. La pixelisation, elle, crée des blocs nets et visibles. C’est pour cela qu’elle est souvent préférée pour cacher une information sensible.

Dans les coulisses : comment chaque pixel devient un carré de couleur

Pour bien comprendre un algorithme de pixelisation, il faut oublier l’idée de « flou » ou de « filtre magique ». En réalité, tout repose sur une opération très concrète : regrouper des pixels et leur donner une couleur unique.

Regardons maintenant comment cela se passe réellement dans le code, exactement comme le fait Pixeliser.

Étape 1 : Découper l’image en blocs

La première étape consiste à définir la taille des blocs. Par exemple : 16 pixels × 16 pixels.

Visuellement, cela revient à poser une grille invisible sur l’image : chaque case de cette grille deviendra un carré pixelisé.


// taille d'un bloc de pixelisation
const pixelSize = 16;

// dimensions de l'image
const width = image.width;
const height = image.height;
  

L’algorithme va ensuite parcourir l’image bloc par bloc, de gauche à droite et de haut en bas.


for (let y = 0; y < height; y += pixelSize) {
  for (let x = 0; x < width; x += pixelSize) {
    // chaque itération correspond à un bloc
  }
}
  
Image découpée en blocs carrés pour la pixelisation
L’image est d’abord découpée en blocs réguliers qui deviendront des pixels géants.

Étape 2 : Lire les pixels contenus dans chaque bloc

Une image numérique n’est qu’une énorme liste de pixels. Chaque pixel contient 4 valeurs : Rouge, Vert, Bleu et Alpha (transparence).

Pour un bloc de 16 × 16 pixels, cela représente 256 pixels individuels.


const imageData = ctx.getImageData(x, y, pixelSize, pixelSize);
const data = imageData.data;
  

Le tableau data contient toutes les couleurs du bloc, rangées les unes à la suite des autres :

  • data[i] → rouge
  • data[i + 1] → vert
  • data[i + 2] → bleu
  • data[i + 3] → alpha

Étape 3 : Calculer la couleur moyenne du bloc

C’est ici que la magie opère : et pourtant, il ne s’agit que de maths très simples.

On additionne toutes les valeurs rouges, vertes et bleues, puis on divise par le nombre total de pixels.


let r = 0, g = 0, b = 0;
const pixelCount = data.length / 4;

for (let i = 0; i < data.length; i += 4) {
  r += data[i];
  g += data[i + 1];
  b += data[i + 2];
}

r = Math.round(r / pixelCount);
g = Math.round(g / pixelCount);
b = Math.round(b / pixelCount);
  

Le résultat est une seule couleur représentative du bloc. C’est cette couleur qui remplacera tous les pixels originaux.

Pourquoi une moyenne ?
Parce qu’elle conserve la « dominante visuelle » du bloc. Les zones claires restent claires, les zones sombres restent sombres, mais les détails fins disparaissent.
Calcul de la couleur moyenne d’un bloc de pixels
Tous les pixels d’un bloc sont analysés pour produire une couleur moyenne unique.

Étape 4 : Dessiner le carré pixelisé

Une fois la couleur calculée, il ne reste plus qu’à dessiner un rectangle rempli de cette couleur.


ctx.fillStyle = `rgb(${r}, ${g}, ${b})`;
ctx.fillRect(x, y, pixelSize, pixelSize);
  

Ce rectangle remplace visuellement tous les pixels du bloc. L’opération est répétée pour toute l’image.

Pourquoi les pixels restent bien nets ?

Un détail crucial : le lissage est désactivé. Sans cela, le navigateur tenterait de « lisser » les carrés.


ctx.imageSmoothingEnabled = false;
  

C’est ce simple paramètre qui garantit des bords francs et un rendu pixelisé net, sans flou.

Un mot sur le CSS et le rendu final

Le rendu visuel dépend aussi du CSS. Par exemple, forcer le rendu pixelisé côté navigateur :


canvas {
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
  

Cela évite toute interpolation automatique lors des redimensionnements à l’écran.

Pourquoi la pixelisation est irréversible

Une fois les blocs dessinés, les pixels d’origine ont disparu. Les détails fins sont mélangés dans une moyenne.

C’est pour cette raison que la pixelisation est :

  • excellente pour l’anonymisation
  • idéale pour le pixel art
  • très difficile à « dé-pixeliser » correctement

Pixeliser applique exactement ce principe, en temps réel, directement dans ton navigateur, sans serveur et sans stockage d’image.

Pixelisation ou flou : pourquoi ce n’est pas la même chose

Le flou tente de cacher l’information en la rendant vague. Le cerveau peut parfois encore deviner ce qui se cache derrière.

La pixelisation, elle, supprime définitivement les détails fins. Une fois pixelisée, une image ne peut pas être reconstruite correctement. C’est ce qui en fait une méthode de censure visuelle beaucoup plus fiable.

Quand la pixelisation devient un outil créatif

En augmentant la taille des pixels et en limitant les couleurs, le même algorithme change totalement de rôle.

Il permet de créer un style pixel art rétro inspiré des jeux vidéo 8-bit : avatars, illustrations, sprites, visuels de jeux ou même œuvres numériques.

Tester l’algorithme par vous-même

Sur pixeliser.fr, tu peux tester cet algorithme en temps réel. Tout se passe localement sur ton appareil, sans inscription et sans upload d’image.

Ajuste la taille des pixels, visualise instantanément le résultat et exporte ton image en PNG sans perte.

Tester la pixelisation maintenant →