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 :

Tableau de bytes et canvas d'un bitmap


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Tableau de bytes et canvas d'un bitmap
    Bonjour,

    Dans un fichier bitmap je suppose qu'il existe un tableau de bytes après l'entête du fichier.(sans doute le canvas)
    Pour une question de rapidité peut-on le récupérer dans un tableau de bytes ou de Tcolor sans être obligé de de passer par canvas.pixels[x,y] ?
    Si Oui comment ?
    Un exemple de code serait bienvenu

    Merci à tous

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    oui, avec ScanLine
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Je connais ScanLine
    Ma question est sans doute mal posée :
    Exemple : je crée le tableau "pixtab" = array of array of TColor aux dimensions d'un bitmap. Existe-t'il un autre moyen (plus rapide) que ScanLine ou Pixels pour copier l'image du bitmap dans le tableau Pixtab ? par exemple avec un pointeur ? Le canvas possède t'il un pointeur sur du tableau de Tcolor que l'on explore avec pixels ?

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 932
    Par défaut
    Scanline renvoi le pointeur sur le tableau. Le premier élément se trouve à ScanLine[Bitmap.Height -1]

    La seule différence est que ce tableau représente des valeurs sur 1,2 ou 4 bytes en fonction du PixelFormat et non des TColor (type générique sur 4 bytes).

  5. #5
    Membre très actif
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Par défaut
    Salut,

    Explorer un fichier Bitmap c'est ouvrir la boîte de Pandore tant il existe de sortes différentes de Bitmap.

    Pour en avoir une idée.

    La méthode la plus rapide est Scanline comme le suggérait Paul Toth (Scanline est un pointeur !). Reste à adapter cette méthode au format du Bitmap. Le plus aisé est sans doute le pf32bit dont l'alignement correspond à la structure de la mémoire.

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par colorid Voir le message
    Ma question est sans doute mal posée :
    Exemple : je crée le tableau "pixtab" = array of array of TColor aux dimensions d'un bitmap. Existe-t'il un autre moyen (plus rapide) que ScanLine ou Pixels pour copier l'image du bitmap dans le tableau Pixtab ? par exemple avec un pointeur ? Le canvas possède t'il un pointeur sur du tableau de Tcolor que l'on explore avec pixels ?
    oui avec ScanLine

    maintenant vu que tu ne précises absolument pas ce que tu comptes faire de cette image il est difficile de te dire ce qu'il convient de faire.

    car tu n'es pas obligé d'utiliser un Bitmap pour travailler sur une image, si tu colles un entêtre BMP à ton pixtab tu peux sauvegarder tout cela dans un fichier et obtenir un .BMP
    si tu utilises la fonction Bitlt() tu peux aussi dessiner directement ton pixtab

    bref
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

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

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Création de bitmap à partir d'un tableau de byte
    Par Phenix26 dans le forum Windows
    Réponses: 2
    Dernier message: 06/12/2007, 20h30
  3. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  4. [VB.NET] Tableau de bytes Lecture/Ecriture
    Par BenoitM dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/04/2005, 09h51
  5. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/01/2005, 10h12

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