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

Langage Delphi Discussion :

conversion image 8 bit en image 2 bit


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut conversion image 8 bit en image 2 bit
    Bonjour,

    Quelqu'un peut-il me donner un exemple de code delphi pour convertir une image 8 bit en image 2 bit. Autrement dit une image en 256 niveaux de gris en image noir et blanc brute

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Des exemples,tu dois en trouver sur le forum, je ne l'ai jamais fait mais je sais
    qu'il faut toucher TBitmap.PixelFormat avec la valeur pf1bit

    Noir et Blanc, c'est DEUX positions, DEUX Valeurs 1 et 0 donc 1 bit
    2 Bit donnerait 4 Couleurs 00, 01, 10 et 11 mais je ne connais pas !

    Cela doit être pareil que Comment convertir une image 24 bits en 8 bits ?
    Je te conseille d'abord de gérer toi même le passage en 00 et FF selon tes propres critères deux seuils puis de changer le format qui sinon fera une perte de données brutales

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Points : 182
    Points
    182
    Par défaut J'ai esayé 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
     
            BMP.PixelFormat := pf24Bit;
            BMP.Assign(Image1.Picture.Bitmap);
            bm.PixelFormat := pf1Bit;
            for j := BMP.Height - 1 downto 0 do
            begin
               rowGRAY := BMP.ScanLine[j];
               for i := BMP.Width-1 downto 0 do
               begin
                  With rowRGB[i] do
                     Gray := (RgbtRed + RgbtGreen + RgbtBlue) DIV 3;
                  if Gray<128 then C := clBlack else C := clWhite;
                  bm.Canvas.Pixels[i,j] := C;
               end;
            end;
       Image3.Picture.Bitmap.Assign(bm);
    J'ai essayé ce code, mais le seuil de 128 (256/2) est-il convenable ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 753
    Points : 13 338
    Points
    13 338
    Par défaut
    Charge l'image et fixe le PixelFormat sur 1 bit, c'est suffisant. Il n'y a pas besoin de deux image +Scanline, etc.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Citation Envoyé par colorid Voir le message
    J'ai essayé ce code, mais le seuil de 128 (256/2) est-il convenable ?
    Cela doit être le seuil par défaut et dans cas fait le plus simple comme le souligne AndNotOr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BMP.LoadFromFile(...);
    BMP.PixelFormat := pf1Bit;
    BMP.SaveToFile(...);
    Ne fait un code plus complexe que si tu veux fournir un autre seuil genre ne conserver que le rouge en noir et blanc pour le reste

Discussions similaires

  1. Image de données codé en 16 bit
    Par kevinl dans le forum Images
    Réponses: 19
    Dernier message: 18/04/2007, 12h31
  2. [Image] Création d'une image Niveaux de Gris 16 bits
    Par Panthère Bleue dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 13/07/2006, 19h41
  3. image en niveau de gris 16 bits
    Par kekeauboulot dans le forum Delphi
    Réponses: 2
    Dernier message: 16/06/2006, 19h25
  4. Lire bit à bit une image JPEG
    Par moumoute15 dans le forum Images
    Réponses: 1
    Dernier message: 10/06/2006, 15h13
  5. Convertir une image BMP 8 bits en BMP 24 bits
    Par SauCisS dans le forum Bibliothèques
    Réponses: 17
    Dernier message: 23/03/2005, 09h51

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