Réponse courte

Les lignes de pixels d’un BMP peuvent commencer en bas ou en haut. Inspectez la hauteur signée et l’en-tête, utilisez une mire clairement orientée et vérifiez les PNG et JPG obtenus sans masquer un défaut de décodage par un retournement manuel.

Essayer les outils

BMP → PNG

Ouvrir l’outil

Reconnaître les deux directions de lignes BMP

Les données d’un bitmap indépendant du périphérique Windows ne sont pas toujours stockées depuis la ligne visuelle supérieure jusqu’à la ligne inférieure. Dans un cas courant de BITMAPINFOHEADER, une hauteur positive décrit un bitmap de bas en haut dont le tableau de pixels commence par la dernière ligne visuelle. Une hauteur négative peut décrire un bitmap de haut en bas commençant par la première ligne. Le décodeur doit interpréter ce signe et replacer les lignes dans les coordonnées d’affichage ; s’il traite tous les tableaux comme s’ils commençaient en haut, le résultat peut être retourné verticalement.

Préparez une source impossible à confondre : inscrivez TOP près du bord supérieur, BOTTOM près du bord inférieur et placez une forme asymétrique d’un seul côté. Relevez dans l’en-tête la largeur, la hauteur signée, la profondeur et la compression, puis ouvrez le BMP original dans plusieurs logiciels. Si un seul l’inverse, son décodeur est suspect. Si tous concordent, l’application créatrice a peut-être écrit les pixels dans le mauvais ordre ou associé au tableau un signe de hauteur incohérent.

  • Inspecter le signe de la hauteur
  • Employer une mire d’orientation asymétrique
  • Comparer plusieurs décodeurs BMP

Le signe de la hauteur peut exprimer la direction des lignes, et pas seulement le nombre absolu de pixels.

Distinguer l’ordre des lignes des autres défauts d’orientation

Un retournement vertical dû aux lignes n’est ni une rotation d’appareil photo ni un problème Exif Orientation. Ne diagnostiquez pas un flux BMP comme un flux JPEG. Si le texte se lit toujours de gauche à droite mais que haut et bas ont échangé leur place, examinez d’abord l’ordre des lignes. Une rotation à quatre-vingt-dix degrés, un miroir horizontal ou une transformation combinée désigne plutôt le logiciel de capture, une conversion antérieure ou une opération ajoutée pendant l’affichage.

Certaines API de capture d’écran et anciennes applications copient une mémoire DIB vers un fichier BMP tout en associant le mauvais signe au tableau de lignes. Renommer l’extension ou retourner manuellement l’image finale ne fait que cacher le symptôme d’un exemplaire. Notez l’application source, chaque traitement intermédiaire et le convertisseur final, puis comparez après chaque étape. Si la même mire permet de produire un fichier correct et un fichier défectueux, confrontez leurs en-têtes, décalages de pixels et premières lignes.

  • Distinguer retournement et rotation
  • Tracer chaque étape de création et conversion
  • Comparer les en-têtes correct et défectueux

Contrôler le remplissage des lignes et le décalage des pixels

Les lignes de balayage BMP peuvent contenir des octets de remplissage pour respecter un alignement. Si le décodeur avance du nombre d’octets visibles au lieu de la longueur complète de la ligne remplie, on observe plutôt une dérive diagonale, des bandes colorées ou des lignes tronquées qu’un retournement net. Vérifiez le décalage vers les pixels, la profondeur, la largeur et le calcul des octets par ligne. Des largeurs qui ne tombent pas naturellement sur la limite de stockage révèlent mieux les erreurs de remplissage que des dimensions commodes.

Les variantes à palette ou compressées ajoutent d’autres conditions. La réussite d’un BMP 24 bits non compressé ne démontre pas une prise en charge universelle. Si les entrées réelles comportent des palettes 1, 4 ou 8 bits, des pixels 16 ou 32 bits, des canaux proches de l’alpha ou une compression, testez chaque classe employée. N’inventez pas un décalage et ne corrigez pas les octets à la main. Il est généralement plus sûr de préserver la source, de la décoder avec une implémentation conforme et d’écrire une nouvelle sortie standard.

  • Calculer la longueur remplie de la ligne
  • Tester des largeurs mal alignées
  • Couvrir les profondeurs et palettes réelles

Une dérive diagonale ou des lignes colorées signalent souvent un défaut de remplissage ou de décalage, pas seulement un ordre inversé.

Comparer PNG et JPG selon l’usage prévu

Convertir le BMP en PNG fournit une référence sans perte adaptée au contrôle de l’orientation, des contours nets et des couleurs exactes. JPG ajoute une compression avec perte et ne possède pas de canal alpha ; il convient donc moins au diagnostic de petits textes ou de pixels de bord. Vérifiez d’abord le PNG. Ne créez un JPG que si le destinataire l’exige et traitez la qualité JPEG, le sous-échantillonnage des couleurs et la composition sur un fond comme des décisions distinctes de l’ordre des lignes.

Affichez le BMP, le PNG et le JPG aux mêmes dimensions, puis comparez les quatre coins, la première ligne, la dernière et les repères d’orientation. Ne vérifiez pas seulement que l’image paraît droite : recherchez une ligne manquante, une variation de couleur due au remplissage ou un changement d’alpha. Si le convertisseur corrige automatiquement une source incohérente, consignez-le. Un autre outil peut interpréter autrement la même source, même si la première sortie semble bonne.

  • Prendre PNG comme référence de diagnostic
  • Comparer première et dernière lignes
  • Documenter toute correction automatique

Valider des types BMP représentatifs de bout en bout

Constituez un jeu comprenant des fichiers de haut en bas et de bas en haut, plusieurs largeurs, des images à palette et les variantes 24 ou 32 bits de production. Faites passer chacun par le véritable outil BMP vers PNG ou BMP vers JPG, puis ouvrez les résultats dans l’application destinataire et un visualiseur indépendant. Confirmez haut et bas, dimensions, couleurs, comportement de l’alpha et intégrité des lignes de bord. Employez des noms neufs et des sommes de contrôle afin qu’un cache n’affiche pas un ancien résultat.

Consignez les valeurs d’en-tête d’origine, l’application créatrice, la version du convertisseur, les réglages de sortie et l’environnement de test. Ne réparez pas un dérivé défectueux en le retournant puis en l’écrasant ; revenez à la source et décodez-la correctement. Pour le dernier contrôle, envoyez au service de livraison la mire marquée et une image métier réelle, téléchargez les versions servies et comparez leurs bords. Ne lancez le traitement par lots qu’après la réussite de chaque classe nécessaire.

  • Tester les deux directions de lignes
  • Éviter les anciens aperçus en cache
  • Inspecter le fichier téléchargé du service

La mire d’orientation et un véritable BMP de production doivent réussir avant la conversion d’un dossier entier.

À retenir

  • Dans des structures DIB courantes, une hauteur positive peut indiquer des lignes de bas en haut et une hauteur négative, des lignes de haut en bas.
  • Un décodeur qui ignore le signe peut retourner l’image verticalement ou produire des résultats variables selon les applications.
  • Une mire asymétrique et marquée, associée à l’examen de l’en-tête, distingue ce défaut d’une rotation ou d’un problème de capture.
  • Après conversion, contrôlez orientation, dimensions, couleurs, remplissage et lignes de bord dans le système réellement destinataire.

Questions fréquentes

Pourquoi un BMP peut-il stocker d’abord la ligne inférieure ?

Les dispositions DIB traditionnelles peuvent employer un tableau de bas en haut avec une hauteur positive, puis le décodeur reconstruit l’ordre visuel.

Une hauteur BMP négative indique-t-elle toujours une corruption ?

Non. Dans les formes d’en-tête compatibles, elle peut indiquer volontairement un bitmap de haut en bas.

Puis-je simplement retourner l’image convertie dans un éditeur ?

Cela peut corriger un fichier visible, mais laisse l’incohérence de la source ou du décodeur et le défaut peut réapparaître.

Une dérive diagonale est-elle aussi un problème d’ordre des lignes ?

Elle signale plus souvent une longueur de ligne remplie ou un décalage incorrect, à vérifier avec la largeur et la profondeur.

Quel est le dernier contrôle de conversion ?

Convertissez une mire marquée et un vrai BMP, puis comparez orientation, bords, dimensions et couleurs dans les fichiers effectivement livrés.

Sources et références

  1. Microsoft Learn — Device-Independent Bitmaps
  2. Microsoft Learn — BITMAPINFOHEADER Structure
  3. Microsoft Learn — BMP Format Overview