IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Modifier l'offset d'un bitmap en python


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Modifier l'offset d'un bitmap en python
    Bonjour,

    Je dois faire un programme en python pour convertir des images .bmp en un format assez spécifique (.xim).
    Pour cela je dois juste ajouter des informations entre l'en-tête classique et l'image.
    Je dois donc "juste" modifier l'offset (adresse du 1er pixel de l'image) dans l'en-tête bitmap et ensuite insérer les informations (dites moi si je me trompe).
    J'ai réussi a extraire l'offset, je lui ajoute la taille exacte de la chaine de caractère que je veux insérer. Mais j'obtiens une image noire avec des points de couleurs.

    Je précise que j'ai effectué des tests en ajoutant à l'en-tête une chaine de caractère de longueur 1 et en ajoutant donc 1 octet à l'offset, j'obtiens le même résultat. C'est donc au niveau de la mise à jour de l'offset qu'il y a un problème.

    J'espere avoir été assez clair
    merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Citation Envoyé par jadlab Voir le message
    Je dois donc "juste" modifier l'offset
    Je dois dire que le "juste" fait un peu peur... Entre l'offset et le bitmap (pointé par File Offset to PixelArray?) , il y a plein d'infos que soit tu déplaces soit tu écrases. Il y a accessoirement aussi la nouvelle taille du fichier à modifier.

    http://en.wikipedia.org/wiki/BMP_file_format

    A+

    Pfeuh

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta reponse
    Je me doutais que le "juste" allait faire peur, c'est pour ça que je l'ai mis entre guillemets.

    Je ne comprend pas, l'offset est codé sur 4 octets, je modifie sa valeur mais elle sera toujours codé sur 4 octets (non?), donc je ne vois pas comment je pourrais écraser quoi que ce soit.
    Soyez indulgent, je débute

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Si tu mets tes infos de x octets à la place de ImageData PixelArray, que tu as préalablement "poussé" ImageData PixelArray de x octets et que tu as ajouté x à File Offset to PixelArray et à File Size, ça devrait marcher... Mais... pour le bitmap il y a peut-être une histoire d'alignement sur 32 bits. Autre problème: Écrire, c'est une chose, mais comment vas tu retrouver plus tard l'adresse de tes infos dans un fichier .xim?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    C'est exactement ce que j'essaye de faire mais je n'obtiens pas la bonne image.
    Peux tu m'en dire plus sur l'histoire d'alignement sur 32 bits?
    Est il possible que le problème vienne du DIB Header Size ?

    Le fichier .xim est lu par un logiciel qui sait retrouver tout seul ces informations à cet emplacement précis.

  6. #6
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par jadlab Voir le message
    Peux tu m'en dire plus sur l'histoire d'alignement sur 32 bits?
    Certains bouts de code voire certains hardwares ne peuvent pas traiter de suites d'octets si le premier n'a pas une adresse xxxxx00.

    Citation Envoyé par jadlab Voir le message
    Est il possible que le problème vienne du DIB Header Size ?
    Je dirai oui, puisque cette donnée est fausse. Maintenant je ne connais pas spécialement le format bpm, j'ai simplement regardé le lien de wikipedia.



    Citation Envoyé par jadlab Voir le message
    Le fichier .xim est lu par un logiciel qui sait retrouver tout seul ces informations à cet emplacement précis.
    Dans la manip que tu es en train de faire, il n'y a rien rien qui pointe sur ta chaine. A part peut-être offset - taille de header ou quelquechose du genre, mais ce n'est pas "normal", me semble t-il

Discussions similaires

  1. Lecture et interprétation d'un offset d'une bitmap
    Par nico92856 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/03/2006, 17h01
  2. Patch modifiant l'offset d'un .exe
    Par Goshi dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/02/2005, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo