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

MFC Discussion :

Afficher une image stockée en memoire


Sujet :

MFC

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 56
    Points
    56
    Par défaut Afficher une image stockée en memoire
    Bonjour,

    J'ai un buffer qui contient un fichier bmp ou jpeg ou gif et j'aimerais savoir comment l'afficher sans avoir a le sauver sur disque dur au préalable.
    En general les methodes pour afficher une image prennent soit un identifiant resource, soit un HBITMAP ou enfin un nom de fichier mais dans mon cas l'image est en memoire...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Lorsque je dois afficher une image en mémoire, je la converti au format DIB (le format bmp est le plus proche du DIB)

    Par la suite, j'utilise les fonction StretchDIBits

    Si tu as l'aide MSDN, tu peux trouver des fonctions "Bitmap Functions"

  3. #3
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Si tu utilise un CBitmap (MFC) utilise la methode SetBitmapBits :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DWORD SetBitmapBits(
       DWORD dwCount,
       const void* lpBits 
    );
    Apres les choses peuvent se compliquer du point de vue du format de ton image, en gnl 8,24 et 32bits.
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  4. #4
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut Re: Afficher une image stockée en memoire
    Citation Envoyé par romeo9423
    Bonjour,

    J'ai un buffer qui contient un fichier bmp ou jpeg ou gif et j'aimerais savoir comment l'afficher sans avoir a le sauver sur disque dur au préalable...
    Tu as un Buffer compressé ou décompressé ?
    Qui va piano va sano...

  5. #5
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Bonjour,

    Est-ce que ce lien la pourrait convenir ?
    http://www.codeproject.com/bitmap/render.asp

    Il lit un fichier depuis le disque, dans la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL LoadPictureFile(LPCTSTR szFile, LPPICTURE* pgpPicture)
    , mais il ne fait que le lire et le stocker dans un buffer: on se retrouve donc dans un état similaire au tien.

    J'ai deje testé ce code pour lire des images depuis le disque (bmp, jpeg, gif, ...) et il les lit sans probleme, peu importe le format, la compression, etc ...

    Donc reste à voir si ca peut s'adapter à ton cas ... par exemple le buffer ou est stockée l'image est alloué avec GlobalAlloc, pour pouvoir en faire un IStream par la suite (avec CreateStreamOnHGlobal)... donc peut etre peux-tu allouer de la mémoire avec GlobalAlloc et y recopier ton buffer ....
    And still we will be here, standing like statues ...

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut Re: Afficher une image stockée en memoire
    Citation Envoyé par romeo9423
    Bonjour,

    J'ai un buffer qui contient un fichier bmp ou jpeg ou gif et j'aimerais savoir comment l'afficher sans avoir a le sauver sur disque dur au préalable.
    En general les methodes pour afficher une image prennent soit un identifiant resource, soit un HBITMAP ou enfin un nom de fichier mais dans mon cas l'image est en memoire...
    Une ressource c'est aussi une image qui est en mémoire. Sauf que les API te permettent d'utiliser cette image très simplement avec des fonctions toutes faites.

    Pour ton cas si tu connais l'adresse mémoire du premier octet de ton image alors pas de problème.

    Utilise les fonctions de l'API avec un pointeur void* et CreateDIBSection(...). Reformer l'en-tête (BITMAPINFO) et le corps qui contient les pixels.
    Attention les fonctions classiques de l'API ne gèrent que le format "bmp". Pour le JPEG, c'est une autre librairie et pour le gif j'en sais rien.

Discussions similaires

  1. Afficher une Image stockée dans un champs BLOB oracle
    Par nonaparus dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2006, 08h26
  2. [MySQL] Afficher une image stocké en base données
    Par Blo0d4x3 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/06/2006, 17h02
  3. [MySQL] Afficher une image stockée dans une base de données
    Par LuckySoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2006, 12h57
  4. [Forms] Afficher une image stockée en base
    Par oramine dans le forum Forms
    Réponses: 12
    Dernier message: 01/02/2005, 14h14
  5. Afficher une image stockée dans interbase
    Par NicolasR dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2004, 10h00

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