Poids d'une image bmp de profondeur 24 bits

Soyez le premier à donner votre avis sur cette source.

Vue 3 863 fois - Téléchargée 168 fois

Description

Le poids d'une image BMP de profondeur 24 bits est très souvent formulée sur le Web selon la formule:
Poids = 3LH où L est la largeur de l'image en pixels, et H sa hauteur en pixels. Cette formule est vraie en première
approximation, mais n'est pas satisfaisante quant à son exactitude.

Sa formulation exacte doit être donnée par la relation: Poids = 3LH + xH + 54

- Le coefficient 3 provient du fait que chaque pixel de l'image est codé sur 3 octets.
- 54 ext le nombre fixe d'octets de l'entête d'une image BMP
- L'inconnue x est déterminée par le nombres d'octets que contient une ligne d'image, nombre systématiquement majoré
ou non à un multiple de 4

exemple: si une image fait 749 pixels de large sur 531 pixels de hauteur, chaque ligne devrait être codée sur
3 x 749 = 2247 octets. Mais 2247 n'est pas divisible par 4. Il suffit alors de déterminer le nombre immédiatement supérieur
à 2247 et multiple de 4 (soit 2248) pour connaitre la valeur x.
x = 2248 - 2247 = 1

Le poids réel de l'image est donc de: (749 x 531 x 3) + (1 x 531) + 54 = 1 193 742 octets

Nota: une même image horizontale n'a pas systématiquement le même poids que l'image verticale.
L'exemple ci-dessus donne 1 193 742 horizontalement pour 1 195 458 verticalement (cela provient du multiple de 4 octets
pour une ligne)

Donc pour que le poids d'une image soit identique horizontalement et verticalement il faut que 3L et 3H soient divisibles par 4.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
juste pour info:
le bitmap 32 Bits ne souffre pas de l'alignement sur 4 octets.
sa taille est donc 4LH + 54

pour le PNG on ne peut pas calculer son poids à l'avance ... pourquoi ?

la réponse est simple:
le PGN étant un Bitmap à qui on applique un filtre (parmi 5 disponible ***) et une compression sans pertes de données et ce ligne par ligne.
Chaque ligne peut utiliser un filtre différent et ne tient pas compte de l'alignement.

Rien que ceci rend le calcul du poids impossible mais d'autres données peuvent encore être ajoutées au fichier PNG ... voir le lien ci-dessous pour une information plus complète.
http://www.w3.org/TR/PNG/

***
TFilterType = (ftNONE, ftSUB, ftUP, ftAVERAGE, ftPAETH);
pour plus d'infos sur les filtres:
http://www.w3.org/TR/PNG/#9-table91
Messages postés
52
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2014

Bonjour,
Je vais y réfléchir.
Bonne journée.
Messages postés
6
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
4 janvier 2012

pourriez vous avec la même précision décrire le format ,donc le poids, d'une image .bmp de profondeur 32 bits (couche alpha) .Et même d'une image .png ?
Merci
Messages postés
52
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2014

Bonjour,
OK, merci.
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
Bonsoir,

Ta source est, je pense, plus un snippet.
Dans ce cas, il est préférable de faire une fonction qui prend en paramètre 2 entiers (taille X et Y) et retourne la taille.
Ensuite, tu mets cela sur www.codyx.org.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.