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

Composants VCL Delphi Discussion :

Faire un BMP avec plusieurs PNG, problème de couleur ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Faire un BMP avec plusieurs PNG, problème de couleur ?
    Bonjour,

    J'ai le code suivant :
    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
     
         carte := TBitmap.Create;
         carte.Width := xmax*256;
         carte.Height := ymax*256;
         carte.PixelFormat := pf8bit;
     
         for i:=x1 to x2 do
         begin
              for j:=y1 to y2 do
              begin
                   if FileExists(nom) then
                   begin
                        png := TPNGObject.Create;
                        png.LoadFromFile(nom);
                        carte.Canvas.CopyRect(Rect(x*256,y*256,x*256)+png.Width,y*256)+png.Height),png.Canvas,Rect(0,0,png.Width,png.Height));
                        png.Free;
                   end;
                   Inc(y);
              end;
              y := 0;
              Inc(x);
         end;
     
         carte.SaveToFile(ExtractFilePath(Application.ExeName) + 'carte.bmp');
         carte.Free;
    La carte est bien assemblée mais les couleurs sont horribles :



    Voici les propriétés de mon PNG :



    Savez-vous comment je peux corriger ce problème ?

    Merci,
    Mathieu

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour, pourquoi ne pas augmenter la valeur de PixelFormat ? Car là actuellement ton bitmap n'est configuré que pour utiliser une palette de 256 couleurs ce qui, forcement, limite les possibilités.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    C'est vrai, je viens d'essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    carte.PixelFormat := pf32bit;
    Le poids de mon image augmente mais le résultat reste identique.

    Mathieu

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Et si tu essayes de faire la fusion des images dans une image de type TPNGObject puis que tu la sauvegarde au format BMP ?
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    L'idée est très bonne surtout que le format BMP ne m'intéresse pas beaucoup de par sa taille, j'ai donc effectué les modifications nécessaires dont la majeure est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    carte := TPNGObject.CreateBlank(COLOR_RGB,16,xmax*256,ymax*256);
    Mais mon image reste identique

    Je ne comprends pas pourquoi...

    Mathieu

  6. #6
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    J'ai trouvé la solution, il faut passer par un TBitmap intermédiaire, du coup, je suis resté pour le moment sur une carte en TBitmap...

    Par contre, lorsque je veux utiliser des valeurs plus grandes (xmax et ymax = 21), j'ai l'erreur :
    Espace insuffisant pour traiter cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         carte.Width := xmax*256;
         carte.Height := ymax*256;
         carte.PixelFormat := pf8bit;
    Il me met l'erreur sur le carte.Height...

    Savez-vous comment faire pour traiter une image de grande taille sans avoir ce type d'erreur ?

    Merci,
    Mathieu

  7. #7
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Le problème est résolu en passant par TPNGObject au lieu d'un TBitmap.

    Mathieu

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

Discussions similaires

  1. faire une table avec plusieurs tables issues de base différentess
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/03/2009, 14h12
  2. Comment faire un site avec plusieurs pages en Flash
    Par dialloma dans le forum Flash
    Réponses: 2
    Dernier message: 06/10/2008, 13h21
  3. Réponses: 1
    Dernier message: 04/04/2008, 13h18
  4. Faire une table avec plusieurs
    Par FCL31 dans le forum Modélisation
    Réponses: 1
    Dernier message: 22/01/2008, 13h44
  5. Faire un "Dir" avec plusieurs extensions
    Par Invité(e) dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 15/05/2006, 12h19

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