DirectShow - J'ai un buffer, je voudrais un bitmap - C++ - Programmation
Marsh Posté le 11-09-2003 à 12:54:47
heureusement que tu nous dis quelle methode tu as essayé sinon on pourrait pas t'aider !
sauvegarde la en TGA 32bpp non compresse ta broutte, y'en a pour10mn a faire ca
Marsh Posté le 11-09-2003 à 13:25:23
Et chercher ds la MSDN aussi (edit : et google)
|
Marsh Posté le 11-09-2003 à 13:54:15
Merci pour vos réponses
J'ai choisi d'utiliser la méthode de la MSDN, seulement je me pose quelques questions:
est-ce que je dois utiliser les deux fonctions?
dans la deuxième fonction, à quoi correspond HDC hdc? Je ne sais pas quoi mettre dans l'appel de la fonction...
Marsh Posté le 11-09-2003 à 14:08:27
Euh c t pas pour t'imposer une methode hein le code, jsute que 1 sec de recherche et y a un exemple.
HDC = device context (regarde la doc de DC)
C juste une exemple je le repete, comem tu nous a mm pas indique le format de ton buffer, dur de dire ce que tu aurais besoin.
Marsh Posté le 11-09-2003 à 14:28:22
Voici le code me permettant de récupérer l'image dans le buffer:
Code :
|
Donc le buffer est contenu dans un char*, si je ne m'abuse...
Mais le problème est que CreateDIBSection demande non pas un char*, mais un void*
Alors j'ai fait comme ça à la suite, pour voir ce qui est récupéré:
Code :
|
Mais là je ne vois pas les images de la vidéo, mais un screen shot d'une fenêtre d'Internet Explorer...
Alors voilà le problème: récupérer l'image de la vidéo correctement...
Marsh Posté le 11-09-2003 à 14:30:57
Par format de ton buffer, c'est vis a vis de ton premier post, et du fait que ok tu as un buffer mais dedans y a koi du RGB, compresse, etc ??
Marsh Posté le 11-09-2003 à 14:35:37
Normalement, c'est du uncompressed 24-bit RGB
Marsh Posté le 11-09-2003 à 15:00:48
Ben un truc du genre et tu sauves tel quel en ayant rempli les headers
Code :
|
Tu mets entre autre choses :
- type = "BM"
- offset = taile des 2 headers (= debut de l'image reelement ds le fichier)
- compression a 0
- planes = 1
- bits = 8
Et tu sauves en BGR et pas RGB
Voila en gros
Marsh Posté le 11-09-2003 à 15:32:19
Bon, j'arrive à enregistrer le bitmap sur le disque...
Le problème est que l'image est toute noire...
Les données d'en-tête sont bien copiées, puisque je peux afficher ce bitmap... C'est donc que je n'arrive pas à copier correctement le contenu de l'image...
Ca serait pas un problème typique ça?
Marsh Posté le 11-09-2003 à 23:50:55
Ouais, depuis 2 jours que Google et MSDN, j'ai enfin trouvé ce que je cherchais, et ça marche, plutôt bien même...
Marsh Posté le 11-09-2003 à 12:49:13
Salut,
alors dans mes problèmes de DirectShow, je pense (j'espère) voir la lumière:
j'arrive à récupérer un buffer de l'image en cours:
Maintenant, je voudrais transformer ce char en un joli bitmap sur mon disque dur, mais je n'y arrive pas...
J'ai essayé plusieurs méthodes, mais aucune ne semble fonctionner...
Quelqu'un peut m'aider?
Merci d'avance
Message édité par haazheel le 11-09-2003 à 13:59:35
---------------
Another .Net Blog