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 :

Array of byte + image + Stream


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Array of byte + image + Stream
    Hello !

    J'ai un fichier qui contient une image au milieu d'autres données.
    Je voudrais afficher cette image dans un TPicture.
    Pour le moment je lis mon fichier dans un Array of Byte dynamique que je parse pour trouver l'adresse de mon image.
    Par contre après je coince.
    J'arrive à extraire l'image dans un fichier JPEG avec un classique BlockWrite sous la forme suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BlockWrite(fichier,TabFichier[664],taille);
    De cette manière j'arrive à avoir juste mon image sans éléments parasites.
    Existe t'il une solution aussi simple pour coller le tout dans un MemoryStream ?
    Voilà l'ébauche du truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Stream:=TMemoryStream.Create;
        Stream.Size:=taille;
        Stream.Write(TabFichier[664],taille);
        Image1.Picture.Bitmap.LoadFromStream(Stream);
    En faisant ça mon Stream est vide....

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par Demonaz Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Stream:=TMemoryStream.Create;
        Stream.Size:=taille;
        Stream.Write(TabFichier[664],taille);
        Image1.Picture.Bitmap.LoadFromStream(Stream);
    En faisant ça mon Stream est vide....
    En faite, il n'est pas vide... il est tout simplement à la fin je crois....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Stream:=TMemoryStream.Create;
        Stream.Size:=taille;
        Stream.Write(TabFichier[664],taille);
        Stream.Position:=0; //<- Remet au debut le stream
        Image1.Picture.Bitmap.LoadFromStream(Stream);
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Vu sous cet angle...
    Normalement en théorie ça devrait fonctionner ?
    Je veux dire c'est pas une aberration de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stream.Write(TabFichier[664],taille);
    En toute bonne logique le Stream devrait se remplir avec ce qui se trouve à l'index 664 de mon tableau et ce jusqu'à la taille indiquée.

    Ou alors j'ai tout faux...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Il se rempli bien effectivement...
    mais c'est lors du LoadFromStream() que le probleme se pose.

    LoadFromStream commence à la position... et load jusqu'à la fin.
    Si position est = à Stream.Size... ben là... il ne load rien...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ouf c'est déjà ça
    Merci !
    Je pensais avoir délirer (faut dire que conceptualiser du code pendant une formation pro, c'est pas le top...)

    Ca passe par contre j'ai un message "Erreur Bitmap incorrect"
    J'ai mis un point d'arrêt sur la ligne où Stream est envoyé dans le TPicture et il n'y a rien dedans au survol de la souris...

    EDIT: c'est bon, je suis un boulet...
    Je balançais mon Stream directement dedans alors que c'est un JPEG...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Stream:=TMemoryStream.Create;
        Stream.Size:=taille;
        Stream.Write(Gbx[664],taille);
        Stream.Position:=0;
        jpg:=TJPEGImage.Create;
        jpg.LoadFromStream(Stream);
        Image1.Picture.Bitmap.Assign(jpg);
    Ca fonctionne bien mieux !!
    Merci !

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    etant donnée que c'est un jpeg que tu load.. ca fait du sens non?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

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

Discussions similaires

  1. Caster en array of Byte
    Par the big ben 5 dans le forum Delphi
    Réponses: 3
    Dernier message: 14/11/2006, 15h00
  2. [FLASH 8] Diaporama images + streaming
    Par kyrsa dans le forum Flash
    Réponses: 1
    Dernier message: 06/06/2006, 19h09
  3. Réponses: 5
    Dernier message: 18/11/2005, 22h11
  4. [Array][String]byte[]
    Par beb-mbs dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 25/08/2005, 06h16
  5. [Type] alternative a "array of byte"
    Par Clorish dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2005, 11h59

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