Accueil
✳︎

Kiln

Un outil de traitement d'image monochrome et de tramage, développé pour proposer une alternative libre aux grandes suites payantes

J'ai créé Kiln pour répondre à un besoin très concret : pouvoir convertir des images en monochrome avec des trames de qualité (points, lignes, dithering), sans dépendre d'un abonnement Adobe ou d'un logiciel spécialisé fermé comme Stochaster. L'idée de départ était simple, mais je voulais que le rendu soit à la hauteur des vrais outils professionnels d'impression — pas une simple conversion en noir et blanc approximative.

Le projet a pris de l'ampleur au fil du développement. Ce qui devait être un petit outil de conversion est en train de devenir un véritable éditeur par calques, avec du détourage automatique par IA à venir. Mon ambition à terme est d'en faire un éditeur d'image plus généraliste, le tramage n'étant que la première pierre.

Ce que ça fait aujourd'hui

  • Conversion monochrome avec duotone personnalisable (je choisis librement mes deux teintes, pas seulement noir/blanc)
  • Trois modes de tramage : points (halftone classique), lignes (effet gravure), dithering par matrice de Bayer
  • Réglages avancés d'impression : angle de trame, linéature, aléatoire pour casser l'effet trop mécanique
  • Ajustement des niveaux (contraste/luminosité), pour un rendu qui a du punch
  • Un vrai système de calques : visibilité, opacité, réorganisation, duplication
  • Export en pleine résolution
  • Une version web et une version de bureau pour Windows

Comment j'ai construit ce projet

J'ai développé Kiln en dialoguant en continu avec Claude (Anthropic), mais pas comme on générerait du code à la chaîne sans le comprendre. Pour chaque fonctionnalité, je me suis attaché à comprendre le principe technique avant de l'implémenter : comment on calcule une luminance, comment fonctionne un seuillage, ce qu'est la diffusion d'erreur, ou encore la trigonométrie nécessaire pour faire pivoter une trame selon un angle donné. C'est cette approche qui me permet aujourd'hui de parler du projet en connaissance de cause, et pas seulement de l'avoir « fait générer ».

Mes choix techniques :

  • JavaScript natif + Canvas API, sans framework, pour garder un contrôle total sur le traitement pixel par pixel
  • Vite pour le build
  • Tauri (Rust) plutôt qu'Electron pour la version desktop — je voulais un exécutable léger, sans embarquer un moteur Chromium complet à chaque installation
  • Un traitement entièrement côté client : aucune image n'est jamais envoyée à un serveur, que ce soit en version web ou desktop. C'était important pour moi, autant pour la confidentialité que pour la simplicité d'architecture

Quelques étapes qui m'ont marqué dans le développement :

  • Je suis passé d'un rendu avec l'API Canvas haut niveau (ctx.arc()) à une écriture directe dans le buffer de pixels, parce que ça ramait dès que la trame devenait fine
  • J'ai implémenté un modèle de « croissance de point » en deux phases (le point noir grandit, puis un trou blanc rétrécit) pour obtenir un vrai noir plein dans les ombres — c'est la technique utilisée en impression offset, et le comprendre m'a permis de corriger un rendu qui restait plat
  • J'ai pensé l'architecture dès le départ pour qu'elle puisse accueillir un système de calques, en séparant bien le calcul d'un effet et la composition finale de l'image

La suite

Je travaille maintenant sur le détourage automatique par IA (directement dans le navigateur, toujours sans serveur), pour pouvoir appliquer mes traitements à des éléments isolés d'une composition plutôt qu'à l'image entière. C'est pour moi la première étape vers un éditeur d'image plus complet, libre et respectueux de la vie privée.