Accueil > Forum > > > > [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface
[SDL] Obtenir la couleur d'un pixel dans une SDL_Surface
vendredi 1 avril 2005 à 22:05:45 |
[SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
Bonjour tout le monde! Voilà je cherche une fonction capable de lire la couleur d'un pixel dans une SDL_Surface, j'ai cherché dans SDL_video.h mais rien qui ressemble à SDL_GetPixelColor... Svp aidez moi! :( ____________________ **Rouliann**Life is short, program more!
|
|
samedi 2 avril 2005 à 09:21:32 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
Ou peut-être y a-t-il une méthode possible sans utiliser la SDL...
____________________ **Rouliann** Life is short, program more!
|
|
vendredi 8 avril 2005 à 22:49:17 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

licorna
|
Pour récupérer la couleur d'un pixel d'une surface, il suffit d'utiliser la fonction :
void SDL_GetRGB(Uint32
pixel, SDL_PixelFormat *fmt, Uint8 *r, Uint8 *g, Uint8 *b);
Elle
place dans les pointeurs correspondants la valeur des 3 composantes du
pixel spécifié. fmt doit être un pointeur sur le champ "format" ta SDL_Surface.
|
|
samedi 9 avril 2005 à 08:16:17 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
Et le "pixel" ? j'ai vu un exemple de cette fonction mais elle ne récupérai que la couleur du premier pixel mais pour moi l'idéal aurait été d'avoir une boucle de ce style : for(y=0; y<surface->h; y++) { for(x=0; x<surface->w; x++) { //récupération des 3 composantes de couleur aux coord x et y } }
Est-ce que tu sais si c'est possible et si oui, comment fait-on ?
En tout cas merci d'avoir répondu j'étais désespéré! lol
____________________ **Rouliann** Life is short, program more!
|
|
samedi 9 avril 2005 à 10:21:14 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

licorna
|
Ce que tu veux faire est tout à fait possible avec une boucle semblable à celle-ci :
for(pixel=0; pixel<(surface->w)*(surface->h); pixel++)
SDL_GetRGB(pixel,surface->format,&r,&g,&b);
Cependant,
l'exécution d'une telle boucle pour la récupération de tous les pixels
d'une surface risque de s'avérer lent. Tu peux donc directement
récupérer la couleur des pixels de la surface en allant tout chercher
dans la SDL_Surface elle-même : en effet,
surface->pixels te donnera un pointeur de type *void
sur les données relatives à la couleur de tous les pixels de la surface
(stockées de manière séquentielle, cf. documentation de la SDL).
Attention, avant de pouvoir accéder au champ "pixels" de la SDL_Surface, celle-ci doit avoir été vérouillée ave la fonction :
SDL_LockSurface(SDL_Surface *surface)
Tu devras ensuite la dévérouiller avec :
SDL_UnlockSurface(SDL_Surface *surface)
|
|
samedi 9 avril 2005 à 10:29:16 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
bin ca revien au meme si les données sont stockées de manière séquentielle non? il faudrai faire :
int pixel = surface->pixel;
et incrémenter pixel jusqu'au point spécifique dont je veux la couleur...
____________________ **Rouliann** Life is short, program more!
|
|
samedi 9 avril 2005 à 11:19:24 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

licorna
|
Non, je pense que tu n'as pas compris, ou que
je me suis mal exprimé : l'argument "pixel" de la fonction SDL_GetRGB
est un n° de pixel de la surface (compris entre 0 et (w*h)-1 ) alors
que le champ "pixels" (avec un 's') de la structure SDL_Surface est un
pointeur sur les données relatives aux pixels d'une surface : autrement
dit, il s'agit là de l'adresse en mémoire de ces données.
Les 2 solutions que je t'ai donné plus haut sont donc totalement différentes :
- une fait appel à une fonction de renvoi de la couleur spécifique;
- l'autre permet simplement d'accéder aux données présentes en mémoire.
|
|
samedi 9 avril 2005 à 11:22:20 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
Hum... je saisis pas encore complètement... Comment on fait pour avoir la couleur du pixel se trouvant en (5,10) par exemple ?
____________________ **Rouliann** Life is short, program more!
|
|
samedi 9 avril 2005 à 12:17:45 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

licorna
|
Réponse acceptée !
Pour récupérer la couleur du pixel (5,10), tu as les 2 manières :
1) Tu peux utiliser la fonction dédiée :
Uint8 r, g, b;
SDL_GetRGB(5*surface->w+(10+1), surface->format, &r, &g, &b);
2) Tu peux lire directement les données de la surface :
SDL_LockSurface(surface); // Vérouillage de la surface
Uint8* pPixels = surface->pixels; // Récupération d'un pointeur vers les pixels de la surface
Uint8 r, g, b; // Variables servant à stocker la couleur du pixel choisi
r = *(pPixels+4*(5*surface->w+(10+1));
g = *(pPixels+4*(5*surface->w+(10+1))+1);
b = *(pPixels+4*(5*surface->w+(10+1))+2);
SDL_UnlockSurface(surface); //Dévérouillage de la surface
Ainsi, il faut bien comprendre qu'un pixel codé sur 32 bits est en fait
représenté sous forme d'un paquet de 4 octets en mémoire.
Dans ces 2 exemples, surface->w est la largeur de la surface en
pixels. De plus, dans le 2°, r, g et b sont récupérées en prenant la
valeur inscrite dans l'adresse en mémoire de chaque composante (dans
cet exemple, j'ai pris le cas d'une surface où les pixels sont codés
sur 32 bits, d'où le "4*" survenant dans le code).
J'espère que ça t'auras éclairé.
|
|
samedi 9 avril 2005 à 13:49:04 |
Re : [SDL] Obtenir la couleur d'un pixel dans une SDL_Surface

Rouliann
|
Merci beaucoup je vais tester ça dans la journée et je reviendrais te dire si ça marche! ;) En tout cas merci!!!
____________________ **Rouliann** Life is short, program more!
|
|
Cette discussion est classée dans : couleur, pixel, obtenir, sdl, surface
Répondre à ce message
Sujets en rapport avec ce message
Problème fenêtre SDL sous Linux [ par Neofabiensama ]
Bonjour,Je poste aujourd'hui car je suis à cours d'idée sur un problème de fenêtre SDL. Je travaille actuellement sur un projet de visualisation 2D d'
pb avec pointeur triple [ par snake57 ]
Bonjour, j'ai essayé de passer par les pointeurs triples, mais j'arrive pas a allouer, la compilation ne passe pas, pouvez vous m'aider svp? Voici
Bitmap et pixel [ par wxccxw ]
Bonsoir, quelqu'un connaiterait-il la facon dont il faut s'y prendre pour charger un BMP de 320*240 et recuperer la couleur en R G B (0 a 255) de c
Histoire de pixels et de points [ par elflink ]
Jamais les pixels n'ont connu de tels points.car les pixels sont des pixels,et les points des points.Mais à connaitre la couleur d'un points, autant c
Récupération d'une couleur d'un pixel d'un canevas [ par bretgod ]
Bonjour, Je travaille sous Borland Builder C++, et je cherche à récupérer la valeur du dernier pixel RGB (coin inférieur droit )d'un canvas(ou g insé
Récupération de la couleur d'un pixel [ par jemac ]
Je cherche une fonction permettant de récupéré la couleur d'un pixel en donnant en paramétre les coordonnées de ce pixel. Comme le fait glSetPixel(
Couleur d'un Pixel et dessin [ par wxccxw ]
Bonjour,je suis en train de faire un colorimètre numérique, et lorsque que je recupere la couleur des pixels a la place de mon pointeur j'obtien toujo
[Visual C++] Couleur d'un pixel [ par kesakoa ]
Bonjour.Je veux automatiser des taches suivant ce que l'écran affiche : j'ai besoin de pouvoir tester la couleur de certains pixels de l'écran. (je ne
Couleur d'un pixel / Hotkey fonctions [ par Derto ]
Bonjours. Quelqu'un aurait t'il la solution pour appeler une fonction grace à une touche de raccourci ? Et j'aimerai aussi savoir si il existe une f
Couleur d'un pixel api win [ par Derto ]
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: -webkit-monospace; font-size: 13px; font-style: nor
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|