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

Lazarus Pascal Discussion :

Comment travailler avec un bmp mal formé, si on ne le sait pas [Lazarus]


Sujet :

Lazarus Pascal

  1. #101
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 829
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 829
    Points : 15 258
    Points
    15 258
    Par défaut
    Salut les gens,

    ce soir je vous fais part d'une découverte stupéfiante de ce matin en farfouillant dans les pages où on ne va jamais, dans Wikipedia, tout en bas de cet article (ou mieux, parce que l'article est long, juste au-dessus de celui-ci, il n'y a que 2 lignes) et où j'ai pu lire avec stupeur qu'Adobe et son célèbre 'toshop s'assoient sur les standards, contrairement à cette discussion pointée par Yves il y a quelques jours, qui m'avait parue sympathique et bien argumentée au premier abord, mais suite à la lecture indiquée ci-dessus, j'ai réalisé un test avec The Gimp v2.8.2 sous Linux et PhotoShop LE 5.0 sous XP, leur demandant de générer une image rgb de 1x1 en 24 bpp et force est de constater, images de l'éditeur hexa à l'appui, que la clique d'Adobe est une bande de fieffés menteurs !
    Nom : compar_gimp_toshop.png
Affichages : 179
Taille : 29,7 Ko
    La couleur n'est pas la même, ça n'a aucune importance.

    Pour ne pas mourir idiot et pour être sûr de ce que j'avance, j'ai refait un test avec une image de 123x15 (pour titiller le padding) x 24 bpp, résultats de la taille du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    thegimp  5634 octets
    pshoppro 5634 octets avec une vieille version de 1996 environ...
    ''toshop 5636 octets
    je vous fais grâce de la copie d'écran, j'ai juste noté comme dans celle ci-dessus qu'il y a bien 2 bytes en plus après le dernier byte de padding de la dernière ligne du fichier.

    Ne vous étonnez donc pas si vous avez des soucis à l'ouverture de fichiers ayant cette provenance.
    Et si quelqu'un a une version récente, ça serait cool qu'il teste viteuf'

    D'autres infos à venir dans les jours qui viennent, mais il fait teeeeeeeellement chaud...

    Stay tuned !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #102
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 829
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 829
    Points : 15 258
    Points
    15 258
    Par défaut
    Bonsoir,

    toujours dans ma quête du Graal et de l'absolu en ce qui concerne la lecture des bmp, je viens de constater, grâce à une discussion d'il y a quelques mois, que la procédure aBmp.LoadFromFile(aFileName) en fait un peu à sa guise et qu'il n'est pas possible par exemple d'accéder à des fichiers mal formés, la procédure partant en erreur pendant l'ouverture et donc impossible de récupérer les données des headers.
    Je pense entre autres à l'unique fichier du dossier "x" de la bmpsuite-2.5, qui a une "ident string" BA (c'est de l'OS/2 parfaitement valide, voir ici), mais aussi à une dizaine de fichiers volontairement mal fabriqués, rangés dans le dossier "b", et impossibles également à ouvrir.

    L'infobulle de LoadFromFile nous disant qu'un "Incorrect file format generates an exception", la bonne question est : qu'est-ce qu'un "incorrect file format" ?

    J'ai cherché un peu dans lazarus/version/lcl/include/rasterimage.inc sans rien trouver de significatif concernant l'erreur et pourquoi elle survient : pas moyen de savoir ce qui est testé.

    Bon, ok, la solution de contournement serait de bien contrôler le fonctionnement de la procédure et si erreur, relancer un chargement du fichier dans un stream, en dehors de tout format graphique.
    La discussion sur la gestion des erreurs peut déboucher sur une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    var
      aBmp: TBitmap;
      FPUExceptionMask: TFPUExceptionMask; // pour la gestion d'erreurs - exige uses Math;
    begin
      Result := False;
      aBmp := TBitmap.Create;
      try  
        {$IFDEF LCLGTK2}
        FPUExceptionMask := GetExceptionMask;
        SetExceptionMask(FPUExceptionMask - [exInvalidOp, exZeroDivide, exOverflow]); // unmask
        {$ENDIF}
        try
          aBmp.LoadFromFile(aName);  // ligne dangereuse à blinder
        finally
          {$IFDEF LCLGTK2}
          SetExceptionMask(FPUExceptionMask);// return previous masking immediately, we must not let Gtk2 internals to be called without the mask
          {$ENDIF}
        end;
        // ici tout va bien, donc 
        // suite normale du programme
      except // ici souci
        // gestion de l'erreur
      end;
      //passage ici dans tous les cas
      aBmp.Free;
    end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #103
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut [Lazarus] Comment travailler avec un bmp mal formé, si on ne le sait pas
    Bonjour,

    Citation Envoyé par Jipété Voir le message
    ... toujours dans ma quête du Graal et de l'absolu en ce qui concerne la lecture des bmp ...
    Je pense entre autres à l'unique fichier du dossier "x" de la bmpsuite-2.5, qui a une "ident string" BA (c'est de l'OS/2 parfaitement valide, voir ici)
    Tu te montres toujours un chercheur infatigable dans la recherche des détails, des défauts des logiciels et des liens Internet.
    Quoique submergé par la prolixité très technique de tes messages, j'ai apprécié la dernière adresse fournie, concernant la structure des images BMP - je me suis moi-même documenté sur le sujet, mais certains liens sont partiellement obsolètes.

    Je n'ai jamais eu de déboires avec Irfan View, de même avec Hex Editor Neo (pour la lecture directe des octets en hexadécimal) - au fait, qu'est-ce que c'est que le lecteur "GHex" ? Est-il lié à un logiciel éditeur d'images ?

    Je crois que tu perds ton temps à vouloir débusquer les incohérences détectables dans les grands logiciels: chaque équipe fait ce qu'elle veut, sans se soucier de l'information de l'utilisateur, et encore moins de la compatibilité des fichiers produits avec les lecteurs concurrents.

    Le plus raisonnable est de s'en tenir au (Free) Pascal & apparentés, ainsi qu'aux exemples basiques cités plus haut.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  4. #104
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 829
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 829
    Points : 15 258
    Points
    15 258
    Par défaut
    Bien le bonsoir, et content de te voir parmi nous.


    Citation Envoyé par wiwaxia Voir le message
    je me suis moi-même documenté sur le sujet, mais certains liens sont partiellement obsolètes.
    La plaie number one du web...
    J'en pleurerais, des fois, quand on voit ce qu'on vit :
    Nom : le_drame_du_404.png
Affichages : 155
Taille : 47,2 Ko

    Citation Envoyé par wiwaxia Voir le message
    au fait, qu'est-ce que c'est que le lecteur "GHex" ? Est-il lié à un logiciel éditeur d'images ?
    GHex c'est l'éditeur hexa de ma Debian ("G" pour Gnome je suppose), dont je ne me souviens pas s'il était fourni de base ou si je l'ai installé après coup, et il n'est lié à rien du tout (à part les libs système).

    Citation Envoyé par wiwaxia Voir le message
    Je crois que tu perds ton temps [...]
    Je te rassure, je crois bien qu'on a fait le tour de la question, avec les copains, et ça se résume à bien vérifier avant ouverture que le fichier sera ouvrable, en lisant les infos des headers (sous-entendu ne pas se ruer comme un noob sur le trop facile Picture.LoadFromFile, qui fonctionne bien tant que tout est normal [bmp 24 bits sous Windows] mais chez moi rien n'est normal, ).

    En gros, c'est comme vérifier la pression des pneus et le niveau d'huile avant de se lancer dans la traversée de la France lors d'un week-end "rouge",


    Merci pour tes encouragements.
    Ça va, toi ? Je lis toujours ce forum beaucoup trop technique pour moi qu'est celui sur les algos, mais je suis curieux, ça entretient la jeunesse
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

+ Répondre à la discussion
Cette discussion est résolue.
Page 6 sur 6 PremièrePremière ... 23456

Discussions similaires

  1. [DW MX2004] Comment travailler avec Excel?
    Par pierrot10 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 11/05/2006, 17h34
  2. Comment travailler avec Win32
    Par Mathieu.J dans le forum MFC
    Réponses: 4
    Dernier message: 25/01/2006, 09h49
  3. [XSLT] Comment travailler avec la balise <br/>
    Par billou13 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/10/2005, 10h47
  4. Comment travailler avec le port IEEE 1394?
    Par Cornejito dans le forum MFC
    Réponses: 6
    Dernier message: 04/05/2005, 14h22
  5. Comment travailler avec le client ?
    Par mathieu dans le forum Gestion de projet
    Réponses: 3
    Dernier message: 12/10/2004, 20h56

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