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 :

[0.9.26] JPEG error [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut [0.9.26] JPEG error
    Bonjour à tous et bonne année !

    J'ai eu la mauvaise surprise de découvrir que le chargement dans un TPicture d'une image JPEG encodée en mode progressif provoquait une Exception (JPEG error)

    Apparemment la cause serait ici:
    http://bugs.freepascal.org/view.php?id=12535

    En attendant une version de fpc avec ce prob résolu (si l'origine du problème se trouve bien là) quelqu'un aurait-il une solution alternative pour la lecture/écriture de JPEG ?

    Merci de vos réponses

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Points : 55
    Points
    55

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    non compatible avec Lazarus 9.26 MacOS X, malheureusement

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    Re bonjour à tous

    Je réactualise ce sujet car l'ouverture des JPEG progressif est effectivement possible avec OPBitmap (lien ci-dessus) sous mac

    Je précise que l'objectif était de charger une image, la redimensionner, et l'enregistrer dans un autre format (pas d'affichage ni de manip à l'écran donc)

    Pour contourner le problème du package non compilé et donc non installable sous laz 0.9.26 Mac j'ai fait ceci:

    Dans le dossier "OPBitmap" téléchargé j'ai copié le dossier "imglibs" directement dans le dossier de mon projet, puis j'ai ajouté le chemin de ce dossier aux directives de compilation du projet.

    Il suffit ensuite d'ajouter à la clause Uses du projet les unités OpBitmap nécessaires.

    Exemple:

    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
    27
    28
    29
    30
     
     
    program Convert;
     
    ...
     
    uses
      ...
      Classes, SysUtils, FileUtil, opbitmapformats;
     
    var
        OPPIC: TOPPicture;
     
    begin
            // charger une image, la redimensionner et l'enregistrer dans un autre format
            try
                try
                    OPPIC := TOPPicture.create;
                    OPPIC.LoadFromFile('test.jpg');
                    OPPIC.Bitmap.Canvas.Resample({nouvelle largeur},{nouvelle hauteur});
                    OPPIC.SaveToFile('test.png'); // l'extension détermine le format d'enregistrement
                except
                    on E: Exception do;
                end;
            finally
                OPPIC.free;
            end;
        end;
     
    end.

    Les JPEG progressifs sont parfaitement lus et convertis.
    OPBitmap permet aussi la conversion des formats TIFF, PSD, TGA et d'autres...

    Par contre j'ai du desactiver quelques lignes de code dans une unité opbimap en assembleur afin de réussir à compiler...

    En espérant que ceci serve à d'autres...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Points : 55
    Points
    55
    Par défaut
    C'est une bonne nouvelle. Je n'ai jamais testé ça sur Mac.
    Il existe aussi une version qui n'utilise plus l'assembleur:

    http://www.theo.ch/lazarus/opbitmap64.zip

    Installe opbitmapforlazcompat.lpk OU passe l'option -dOpbCompat au compilateur.
    Les sources sont les mêmes que pour la version Intel 32 bits, mais il y a des options du compilateur supplémentaires maintenant.

    Ca marche sur 64 bits et c'est peut-être plus facile à porter sur MacOS (je ne suis pas sûr).
    Mais ca ne gère que les BMP, JPEG, PNG, GIF. Les autres formats ont besoin de code asm.

    Version originale :

    That's good news. I've never tested it on a Mac.
    There's also a version which does not use assembler now:

    http://www.theo.ch/lazarus/opbitmap64.zip

    Install opbitmapforlazcompat.lpk OR pass -dOpbCompat to the compiler.
    The sources are the same as for the full intel 32bit version, but there are compiler switches now.

    It works on 64Bit and is probably easier to port to MacOS (I don't know).
    But it only provides BMP, JPEG, PNG, GIF. The other formats need asm.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    Hello theo

    J'ai essayé le nouveau opbitmap64
    Pour info, j'ai Lazarus 0.9.26 sur MacOS X tiger (10.4)

    Installation de opbitmapforlazcompat.lpk : aucun problème (compilation + installation + lazarus compilation = )

    Dans la section Uses de mon unité : "RegisterLazOp" + "opbitmapformats"
    Les exemples plus haut marchent bien, great job !


    Juste une question: ce n'est pas possible d'avoir un TBitmap à partir d'une TOPPicture ?

    Version originale :

    Hello theo

    I've tried your new opbitmap64
    For info, i have Lazarus 0.9.26 on MacOS X tiger (10.4)

    Installation of opbitmapforlazcompat.lpk : no problems (compilation + installation + lazarus compilation = )

    In the Uses section of my unit : "RegisterLazOp" + "opbitmapformats"
    The exemple above works fine, great job !


    Just one question: It's not possible to get a TBitmap from a TOPPicture ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par yann.m Voir le message
    Juste une question: ce n'est pas possible d'avoir un TBitmap à partir d'une TOPPicture ?
    Les exemples montrent comment faire ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uses lazbridge
     
    procedure AssignOpBitmapToBitmap(SourceBitmap: TOpBitmap; Bitmap: TBitmap);
    Ou d'une autre façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure AssignBitmapToOpBitmap(Bitmap: TBitmap; OpBitmap: TOpBitmap);
    Exemple pour ton cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AssignOpBitmapToBitmap(OPPIC.Bitmap, Image1.Picture.Bitmap);
    Version originale :
    The demos show how to do that.

    uses lazbridge

    procedure AssignOpBitmapToBitmap(SourceBitmap: TOpBitmap; Bitmap: TBitmap);
    Or the other way round:
    procedure AssignBitmapToOpBitmap(Bitmap: TBitmap; OpBitmap: TOpBitmap);

    Example for your case:
    AssignOpBitmapToBitmap(OPPIC.Bitmap, Image1.Picture.Bitmap);

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    perfect

    thanks a lot


    --- Traduction ---

    Parfait

    Merci beaucoup

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 64
    Points : 87
    Points
    87
    Par défaut
    Dernière modification par wormful_sickfoot ; 16/04/2009 à 10h21. Motif: Traduction facile...
    Mon anglais étant déplorable, j'ai fait au plus simple

    Apparemment Theodp n'est pas un fervent défenseur de la langue française

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 15h44
  2. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  3. Copier une image (jpeg) dans le presse papier
    Par benj63 dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/07/2002, 14h51
  4. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

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