Que devient la transparence lors de la conversion du PNG vers le BMP ?
6 min de lecture
Le véritable sujet de cette conversion
Lors du passage du PNG au BMP, ce qui intrigue le plus les gens est généralement la taille du fichier — et à juste titre, car l'écart est saisissant. Mais la taille est un résultat prévisible ; c'est une augmentation mathématique, sans surprise.
La véritable surprise se produit du côté de la transparence. Lorsque vous convertissez un PNG transparent en BMP et que vous l'ouvrez sur le système cible, il est fort possible que vous vous retrouviez face à un arrière-plan auquel vous ne vous attendiez pas. Cet article explique précisément ce qui se passe à ce moment-là.
Qu'est-ce que le canal alpha ?
En PNG, chaque pixel peut porter, à côté de son information de couleur, une information d'opacité. C'est ce que l'on appelle le canal alpha. La valeur peut se situer dans une plage allant du totalement transparent au totalement opaque ; autrement dit, un pixel peut être pleinement visible, totalement invisible ou semi-transparent.
Ces valeurs intermédiaires sont importantes. Les lignes courbes au bord d'un logo sont adoucies par des pixels semi-transparents afin de ne pas paraître crénelées. Un effet d'ombre devient progressivement transparent. Le canal alpha ne dit donc pas seulement « il n'y a pas d'arrière-plan » : c'est la recette de la façon dont l'image doit être fusionnée.
L'incertitude du côté du BMP
La variante BGRA 32 bits du BMP peut héberger un octet alpha par pixel. Du point de vue de la spécification, la transparence semble donc transportable.
En pratique, la situation est confuse. Cette prise en charge est incohérente d'une application de lecture à l'autre :
- Certains programmes interprètent correctement l'octet alpha et affichent la transparence.
- De nombreux programmes ignorent totalement l'octet alpha et dessinent l'image en opaque.
- Certains logiciels traitent cet octet d'une manière à laquelle vous ne vous attendez pas du tout.
Cette incertitude découle de la philosophie de conception initiale du BMP. Le format a été créé dans un souci de simplicité ; la prise en charge de l'alpha est restée comme une extension ajoutée après coup et n'est jamais devenue une attente universelle.
La conclusion est la suivante : le fait que votre fichier transporte une information de transparence ne garantit pas que le programme cible l'utilisera. Et comme la raison de votre conversion vers le BMP est généralement l'existence d'un système ancien, supposer que ce système ne prend pas en charge l'alpha est juste non pas statistiquement, mais logiquement.
En quoi se transforment les zones transparentes ?
Lorsque l'alpha est ignoré, les zones transparentes sont aplaties, c'est-à-dire remplies d'une couleur opaque. La couleur de remplissage n'est pas fixe :
- Le blanc, la valeur par défaut la plus fréquemment rencontrée.
- Le noir, dans certains outils et lecteurs.
- Une couleur inattendue, car lorsque l'alpha est ignoré, les données de couleur dissimulées sous le pixel peuvent ressortir.
Cette incertitude devient particulièrement agaçante dans le scénario suivant : vous voulez utiliser un logo transparent sur un panneau sombre, vous convertissez, et sur l'appareil un rectangle blanc apparaît autour du logo.
Le problème caché des bords semi-transparents
L'aplatissement a un effet secondaire moins connu mais plus insidieux.
Les pixels semi-transparents situés sur les bords courbes d'un logo se fondent, lors de l'aplatissement, avec la couleur d'arrière-plan qui se trouve sous eux. Un logo aplati sur un arrière-plan blanc porte sur ses contours une transition qui s'éclaircit vers le blanc.
Lorsque vous utilisez ce logo sur un panneau sombre, cette transition claire des bords y reste et apparaît comme un fin halo tout autour. L'image n'est pas complètement gâchée, mais elle ne paraît pas professionnelle non plus, et la cause en est difficile à identifier, car le fichier semble « correct ».
C'est pourquoi choisir la bonne couleur d'aplatissement ne détermine pas seulement l'arrière-plan, mais aussi la qualité des bords.
La bonne méthode : reprenez le contrôle
Le moyen de lever l'incertitude consiste à ne pas laisser la décision à l'outil.
Remplissez vous-même l'arrière-plan avant la conversion. Ouvrez l'image dans un éditeur, placez en dessous un calque uni de la couleur qui sera utilisée sur la cible, puis aplatissez. Il n'y a désormais plus de transparence ; l'image est exactement telle que vous la voulez et, lorsque vous convertissez du PNG vers le BMP, vous ne rencontrez aucune surprise.
Cette approche présente trois avantages :
- La couleur d'arrière-plan résulte assurément de votre choix.
- Les bords semi-transparents se fondent avec la bonne couleur, et le problème de halo ne se produit pas.
- Le fait que le système cible prenne ou non en charge l'alpha n'a plus d'importance.
Si la préservation de la transparence est indispensable
Dans certains cas, la transparence est réellement nécessaire — si un élément d'interface doit s'afficher sur des arrière-plans variables, un fond uni ne fera pas l'affaire.
Dans ce cas, voici les options :
Restez en PNG. Si le système cible accepte le PNG, il n'y a aucune raison de convertir. Le PNG prend en charge le canal alpha de manière complète et cohérente.
Cherchez le mécanisme propre au système cible. Certaines interfaces anciennes utilisent d'autres méthodes que le canal alpha : un fichier de masque distinct, ou la méthode de la couleur-clé qui considère une couleur donnée comme transparente. Le système peut par exemple fonctionner selon la règle « considérer le magenta vif comme transparent ». Si un tel mécanisme existe, préparer l'image en conséquence est bien plus fiable que de compter sur le canal alpha du BMP.
Changez d'attente. Parfois, la solution la plus pratique consiste à adapter le design pour qu'il fonctionne avec un arrière-plan fixe.
En résumé
Lors du passage du PNG au BMP, les données de couleur sont transportées en toute sécurité, car les deux formats sont sans perte. Ce qui se perd, c'est la transparence, et cette perte est irréversible. La prise en charge de l'alpha par le BMP existe dans la spécification mais n'est pas fiable en pratique ; supposez que votre système cible l'ignorera. La voie la plus propre consiste à réaliser l'aplatissement vous-même plutôt que de le laisser à l'outil de conversion, et à choisir délibérément la couleur d'arrière-plan. Si la transparence est réellement indispensable, la bonne réponse n'est pas la conversion, mais rester en PNG.
Questions fréquentes
Le BMP prend-il réellement en charge le canal alpha, oui ou non ?
Les deux réponses sont vraies, et c'est exactement là que réside le problème. La variante BGRA 32 bits du BMP peut héberger un octet alpha par pixel, ce qui signifie que du point de vue de la spécification, la transparence peut être transportée. Mais cette prise en charge est incohérente d'une application de lecture à l'autre ; de nombreux programmes n'interprètent pas du tout l'octet alpha et affichent l'image entièrement opaque. Certains logiciels d'impression utilisent quant à eux cet octet à d'autres fins. En définitive, le fait que le fichier transporte une information de transparence ne garantit pas que le programme cible l'utilisera.
En quelle couleur les zones transparentes se transforment-elles ?
Cela dépend de l'outil qui effectue la conversion et du programme qui lit le fichier ; il n'existe pas de règle fixe. Les résultats les plus fréquents sont un arrière-plan blanc ou noir, mais dans certains cas, lorsque l'alpha est ignoré, les données de couleur sous-jacentes ressortent et une image inattendue peut apparaître. Le seul moyen fiable de lever cette incertitude consiste à remplir vous-même l'arrière-plan de la couleur souhaitée avant la conversion, et à supprimer ainsi la transparence en toute conscience.
Je vais utiliser mon logo transparent sur un arrière-plan sombre, que dois-je faire ?
Avant la conversion, peignez l'arrière-plan du logo dans la couleur sombre qui sera utilisée sur la cible. Si vous convertissez directement en BMP un logo transparent, l'arrière-plan deviendra très probablement blanc ou noir et apparaîtra comme un vilain rectangle sur le panneau sombre. Par ailleurs, sur les logos transparents, les pixels de bordure sont semi-transparents ; une fois aplatis, ils se révèlent selon l'arrière-plan avec lequel ils ont été fusionnés. Un logo aplati sur un mauvais arrière-plan conserve un fin halo clair sur ses contours.
Si je dois absolument préserver la transparence, quelle est mon alternative ?
L'alternative la plus juste consiste à ne pas convertir et à rester en PNG ; le PNG prend en charge le canal alpha de manière complète et cohérente. Si le système cible n'accepte pas le PNG, cherchez à savoir si ce système dispose de son propre mécanisme de transparence. Certaines interfaces anciennes utilisent un fichier de masque distinct ou une méthode de couleur-clé qui considère une couleur donnée comme transparente. Si l'un de ces mécanismes existe, préparer l'image en conséquence est bien plus fiable que de compter sur le canal alpha du BMP.
Essayez dès maintenant avec PNG → BMP Dönüştür.
Essayer PNG → BMP Dönüştür