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

 Delphi Discussion :

Charger un BMP dans une matrice


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut Charger un BMP dans une matrice
    Bonjour,

    J'ai un fichier BMP (image pixilisée ) de dimension en X et Y connus. je veut "uploader" cette image sur une matrice : L'image contient deux et seulement deux couleurs : le fond en noir, un tracé en jaune.

    je veux charger cette image sur une matrice d'entier de façon à avoir la valeur 0 pour un petit carreau en noir (carreau = pixel ou ensemble de pixel, ça me dérange pas, c'est juste qu'il faut partitionner l'image) noir et 1 pour un carreau en jaune.

    Avez vous des idée SVP ?
    Merci d'avance.

    A+

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 101
    Par défaut
    regarde la propriété Pixels (ou ScanLine) de l'objet Canvas d'un TBitmap ainsi que la méthode LoadFromFile ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    Merci pour la réponse.

    J'ai cherché dans le meme sens que cette fonction (ScanLine), mais j'ai pas arrivé à réaliser un bon code complet.

    Y a pas un exemple qui "pixelise" une petite image BMP de taille 32x32 par exemple ? comme ça j'aurai une meilleure idée sur le syntaxe de la fonction, sa manière de l'appeler et son principe de fonctionnement.

    A+

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 101
    Par défaut
    Qui "pixelise" ??? Propriété Pixels d'un Canvas ... une image informatique ce n'est qu'un regroupement de pixels, pourquoi voudrais-tu pixeliser un truc qui l'est déjà ... c'est pas clair dans ta tête ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            for x := 0 to BitMap.Width - 1  do begin
                for y := 0 to BitMap.Height - 1 do begin
                    Matrice[x, y] := BitMap.Canvas.Pixels[x,y] = clBlack;
                end;
            end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    tu dois te servir de getpixel :
    le code précédent +
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    couleur:=getpixel(bitmap.canvas.handle,x,y);
    cible:=inttohex(couleur,6);
     
    if cible='00FFFF' then matrice[x,y]:=1 else matrice[x,y]:=0;
    je ne vois pas non plus l'intérêt...

    a+

  6. #6
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    En forçant le BMP en 32bits par couleur (même s'il ne contient que deux couleurs à la base), ScanLine peut se montrer aussi rapide qu'une copie dans un tableau d'entier sans avoir à le recopier.
    http://nono40.developpez.com/tutorie.../efg/scanline/

    Pixels est pratique car le code est le même quel que soit la taille et le format du bitmap mais c'est une tortue rhumatisante au niveau du temps de cycle.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

Discussions similaires

  1. Charger un fichier dans une matrice
    Par bayouta19 dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2013, 09h30
  2. [Débutant] Charger un fichier texte dans une matrice de nombres (fonction load).
    Par Invité dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/07/2010, 16h54
  3. Charger une image .png ou .jpeg dans une matrice
    Par Hedidams dans le forum C++Builder
    Réponses: 13
    Dernier message: 06/04/2008, 13h24
  4. Enregistrer une image bmp dans une matrice
    Par Mounr dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/04/2007, 23h54
  5. Réponses: 3
    Dernier message: 07/12/2006, 10h15

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