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

API, COM et SDKs Delphi Discussion :

Renseignements sur TImage


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut Renseignements sur TImage
    Bonjour,

    J'aimerais savoir comment est structurée la zone mémoire qui représente un TImage dans une fiche. Le but, c'est d'accéder directement aux pixels de la Bitmap.
    Pour l'instant, mon application fait un bitmap.savetostream(MyBuffer) et manipule les pixels dans ce buffer avant de les 'réintroduire' avec un bitmap.loadtostream. Mais cette méthode, bien que performante, ne me satisfait pas intellectuellement.
    J'ai tenté plusieurs trucs à base de pointeurs. Rien ne marche vraiment.
    Avez-vous un tuyau ? Un tuto ? Quelque chose qui m'explique où trouver les pixels associés à ce composant TImage ?

    Merci.

  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.

    Une façon de faire est d'utiliser le Canvas du TImage et sa propriété Pixels. Je sais que ce n'est pas la seule méthode (chercher ScanLine ou quelque chose comme ça) mais je ne suis pas très pointu sur le sujet.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    dans le cas de TImage c'est variable puisque TImage.Picture peut contenir différents types d'images (bmp, ico, metafile...)

    s'il contient un bitmap, celui-ci est dans Timage.picture.bitmap

    son organisation mémoire va dépendre de son PixelFormat
    Timage.picture.bitmap.ScanLine[y] est un pointeur sur le premier pixel de la ligne "y"

    ScanLine[Height-1] est un pointeur sur le premier pixel de l'image car les bitmaps ont la tête en bas.

    Si tu sais manipuler le bitmap dans un stream, tu devrais t'y retrouver
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Bonjour,

    Si le but est d'accéder directement aux pixels de la Bitmap, tu peux trouver ici (voir message du 29/11/2008, 13h26 ) : http://www.developpez.net/forums/d65...uleur-tcanvas/
    un bout de code qui fournit :
    - la function LisScanlinePixel(bmp : TBitMap; x,y : integer) : TColor; qui détecte et renvoie la couleur du pixel situé en x,y du BitMap 'bmp',
    - et la procedure MetsScanlinePixel(var bmp : TBitMap; x,y : integer; Coul : TColor); qui donne au pixel situé en x,y la couleur 'Coul'.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Timage.picture.bitmap.ScanLine[y] est un pointeur sur le premier pixel de la ligne "y"

    ScanLine[Height-1] est un pointeur sur le premier pixel de l'image car les bitmaps ont la tête en bas.
    Ok Paul. C'est pile-poil ce que je cherchais.

    Merci à tous et vive ce forum !

Discussions similaires

  1. Réponses: 14
    Dernier message: 10/11/2005, 11h14
  2. [WSAD]Renseignements sur WSAD svp :-)
    Par LESOLEIL dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/10/2005, 15h47
  3. renseignements sur SQL Server 2000
    Par nagty dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/06/2005, 20h59
  4. Renseignements sur TChart
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/06/2004, 12h48
  5. Renseignement sur TPU Motorola 68332
    Par N*E*R*D dans le forum Autres architectures
    Réponses: 7
    Dernier message: 06/04/2004, 09h57

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