Decaler l'encodage d'un bmp

Soyez le premier à donner votre avis sur cette source.

Vue 4 828 fois - Téléchargée 361 fois

Description

On ouvre une fichier BMP 24 bits avec une classe coder par Kirua qui m'a genereusement offert lol. Et avec une classe DecalBit Apres avoir lu le header et mis le codage des pixels dans un tableau decaler les bits un a un a gauche ou a droite de N bit.
<<
>>
Nous ne fesons pas que decaler nous recuperons les bits de poids faible pour les remettres de l'autre coter sinon nous aurons une perte de donner et impossible de recuperer les informations de bases :

Source / Exemple :


// Exemple de decalage de bit a droite avec un octet c et du k:
    f = c & ((1 << k) - 1); // Nous recuperons les bits de poids faibles
    c >>= k; // Decalons l'octet de k
    f <<= (8 - k); // Decalons le bit de poids faible de l'autre coté
    c |= f; // Et avec un ou l'ogique nous "melangons" les 2

Conclusion :


Exemple avec l'octet :
1001 1010
Decalage de 2 a droites
Explication
Un decalage a gauche est une multiplication donc 1 << k equivaut a 2^k
1 << k = 0000 0100
(1 << k) - 1 = 0000 0011
Alors le bit de poids faible est :
1001 1010 = c
& 0000 0011 = ((1 << k) - 1)
___________
0000 0010 = f

Decalons notre octet de base a droite de 2
1001 1010 >> 2 = 0010 0110 = c
f <<= (8 - k) <=> f <<= (8 - 2) <=> f <<= 6
f <<= 6 <=> f = 1000 0000
0010 0110
| 1000 0000
___________
1010 0110

Voilà notre bit decaler :p

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_neria
Messages postés
320
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
16 février 2009
-
Salut !

Ca me rappelle mon TPE de l'année denrière sur la compression des images numériques, j'avais justement fais un programme (en VB) qui permettait de lire (presque) tous les formats BMP (8, 16, 24 bits, N&B, RLE ...) et de les enregistrer dans ces formats, enfin il y a pleins d'application facile à réaliser avec le BMP !!!

@+ Neria
skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009
-
shenron666 >>= Pour la reference ouaih. Mais pour le s c'est une valeur par defaut si y a rien de definie ca prenderas la valeur 1 mais rien n'interdis au programmeur de mettre un 0.

neria >>= Ca a pas vraiment la pretention je sais pas ta deja coder un truc vraiment utile et utiliser par tous maintenant et reconnu comme une reference ? Non plus serieusement c'est juste pour un TPE sur le cryptage lol donc voilà on permute les bits dans un octets...

Ca peut pas couper une image au passage ;) parce que c'est le rouge le vert et le bleu qu'on permute un a un ...
hackademius
Messages postés
172
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
24 février 2008
-
ou alors a brouiller la photo pour que l'on ne la reconnaisse plus ? peut etre
hackademius
Messages postés
172
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
24 février 2008
-
oaui , bonne question , ca sert a quoi ? de decaler les bits ? ca coupe en 2 la photo et met la partie de droite a gauche ? ou koi ?
cs_neria
Messages postés
320
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
16 février 2009
-
Une question : ça sert à quoi ???

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.