Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
mathieu
Inscrit le: 17 Déc 2005 Messages: 6 Localisation: Bretagne, Morlaix
|
Posté le: 22 Déc 2005 17:33 Sujet du message: Traitement d'une image Bitmap |
|
|
zaza
Dernière édition par mathieu le 23 Avr 2006 12:47; édité 1 fois |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 22 Déc 2005 17:56 Sujet du message: Re: Traitement d'une image Bitmap |
|
|
Bonjour, quelques éléments de réponse pour l'entête d'une image BMP codée en 8 bits:
Code: |
> valeur:=proc(liste) local i,val:
# (renvoie la valeur décimale d'une grandeur encodée sur plusieurs bits)
> val:=0:
> for i from 1 to nops(liste) do
> val:=val+liste[i]*256^(i-1):
> od:
> return val:
> end:
> valeur([118,90,1,0]);
88694
> decode_BMP_8bits:=proc(f)
> local file;
> file:=open(f,READ):
> print(` Signature`=map(StringTools[Char],readbytes(file,2)));
> print(` Taille_fichier`=valeur(readbytes(file,4)));
> print(` Espace_réservé`=readbytes(file,4));
> print(` Offset_image`=valeur(readbytes(file,4)));
> print(` Taille_entête`=valeur(readbytes(file,4)));
> print(` Largeur_image`=valeur(readbytes(file,4)));
> print(` Hauteur_image`=valeur(readbytes(file,4)));
> print(` Nombre_plans`=valeur(readbytes(file,2)));
> print(` Nombre_bits_par_pixel`=valeur(readbytes(file,2)));
> print(` Méthode_compression`=valeur(readbytes(file,4)));
> print(` Taille_finale_image`=valeur(readbytes(file,4)));
> print(` Résolution_horiz (en pixels / mètre) `=valeur(readbytes(file,4)));
> print(` Résolution_vert (en pixels / mètre) `=valeur(readbytes(file,4)));
> print(` Nb_couleurs_palette`=valeur(readbytes(file,4)));
> close(file):
> end proc:
>
> f:="C:\\einstein.bmp":
> decode_BMP_8bits(f):
Signature = ["B", "M"]
Taille_fichier = 88694
Espace_réservé = [0, 0, 0, 0]
Offset_image = 1078
Taille_entête = 40
Largeur_image = 296
Hauteur_image = 296
Nombre_plans = 1
Nombre_bits_par_pixel = 8
Méthode_compression = 0
Taille_finale_image = 87616
Résolution_horiz (en pixels / mètre) = 2834
Résolution_vert (en pixels / mètre) = 2834
Nb_couleurs_palette = 256
|
|
|
Revenir en haut de page |
|
|
mathieu
Inscrit le: 17 Déc 2005 Messages: 6 Localisation: Bretagne, Morlaix
|
Posté le: 22 Déc 2005 19:22 Sujet du message: |
|
|
...
Dernière édition par mathieu le 23 Avr 2006 12:45; édité 3 fois |
|
Revenir en haut de page |
|
|
mathieu
Inscrit le: 17 Déc 2005 Messages: 6 Localisation: Bretagne, Morlaix
|
Posté le: 22 Déc 2005 23:01 Sujet du message: |
|
|
#!?
Dernière édition par mathieu le 23 Avr 2006 12:46; édité 1 fois |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 23 Déc 2005 9:20 Sujet du message: |
|
|
Bonjour, effectivement j'ai du mal à voir ce que représente cet offset. Il a en tout cas la même valeur pour les 2 images de tailles différentes einstein.bmp et image.bmp
A+ |
|
Revenir en haut de page |
|
|
mathieu
Inscrit le: 17 Déc 2005 Messages: 6 Localisation: Bretagne, Morlaix
|
Posté le: 23 Déc 2005 10:34 Sujet du message: |
|
|
bzzz
Dernière édition par mathieu le 23 Avr 2006 12:46; édité 1 fois |
|
Revenir en haut de page |
|
|
ALS Invité
|
Posté le: 23 Déc 2005 12:21 Sujet du message: |
|
|
Il y a confusion entre bit et byte. En anglais, byte signifie un octet (nombre entre 0 et FF en hexadécimal, c'est à dire entre 0 et 255 en décimal)
Pour ce qui est de l'entête, les octets du 53ème au 1077ème sont les mêmes pour les 2 images (ce qui correspondrait au codage de la palette?).
L'offset 1078 indique donc le rang de l'octet o๠l'image commence effectivement dans le fichier. |
|
Revenir en haut de page |
|
|
mathieu
Inscrit le: 17 Déc 2005 Messages: 6 Localisation: Bretagne, Morlaix
|
Posté le: 23 Déc 2005 12:31 Sujet du message: |
|
|
zaa |
|
Revenir en haut de page |
|
|
|