Bonjour
Je cherche un pgm/fonction qui permette de connaitre les dimensions d'un image et qui puisse renvoyer la couleur d'un pixel donné (par exemple celui de coordonées (0,0)).
Merci d'avance
Seb
Bonjour
Je cherche un pgm/fonction qui permette de connaitre les dimensions d'un image et qui puisse renvoyer la couleur d'un pixel donné (par exemple celui de coordonées (0,0)).
Merci d'avance
Seb
Hello. En fait ça va dépendre du format de l'image en question. Je n'ai pas de fonction toute faite a te donner, mais ce n'est pas une fonction très dure à écrire:
si ton image est une BITMAP, tout le header est decrit ici: http://www.fastgraph.com/help/bmp_header_format.html
tu peux directement lire les "widht" et "height" dans le header. Pour la valeur d'un pixel, cela va dépendre de 2 choses:
1. le nombre de bit par pixel (normalement 8 pour du noir et blanc, une seule valeur sur un octet pour la luminance, ou 24 pour le BGR: 3 octets, un par couleur)
2. le padding. important pour repérer le bon pixel:
si tu veux repérer par exemple le pixel (x,y), il occupe les 3 octets (dans le cas d'une image couleur) qui commencent à la position: TailleDuHeader+(y*TailleDUneLigne)+x. Mais la TailleDUneLigne n'est PAS égale à nombreDePixelParLigne*nombreDOctetParPixel, MAIS nombreDePixelParLigne*nombreDOctetParPixel+"padding". en effet, les lignes sont parfois remplie à la fin d'1,2 ou 3 octets de bourrage pour que le nombre d'octet par ligne soit un multiplie de 4.
Si ton image n'est pas une bitmap, ben le principe est le même, il faut juste trouver le header des autres formats
Il n'existe rien de tel en C++ standard. Il faudra utiliser une bibliothèque, soit l'API Windows s'il s'agit de bitmaps, soit l'une des nombreuses bibliothèques de traitement d'images gratuites (OpenIL, FreeImage, CxImage, ... -> Google).
Si tu as un peu de temps à perdre tu peux bien sûr également le faire à la main comme te le suggère Biosox.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
merci de ta reponse biosox, mais comment fait on pour acceder aux énième bit de l'image?
ifstream source ("image.bmp")???et apres??
j'ai essayé : source>>valeur(int) ...ca marche po...
Merci d'avance
Tu es vraiment sûr de vouloir tout te taper à la main ? ... D'autant plus que si tu t'y prends comme ça c'est plutôt mal parti. Comme te l'a indiqué Biosox, il faut prendre connaissance du format spécifique à ton image, puis effectuer la lecture en conséquence. Le format bitmap est très simple (mais tout de même pas limité à ce que tu as écrit, et si tu restes avec du RGB 24 bits non compressé), pour d'autres formats de fichiers c'est une idée à oublier.Envoyé par Sebsheep
Tu devrais vraiment utiliser une bibliothèque.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Je pense que loulou24 a raison.
cependant, si tu veux quand meme ecrire ta fonction à la main, une fois que tu as mis ton image sans un ifstream, c'est la fonction "seekg" qui te permet de placer ton "curseur" ou tu le désire dans le stream, pour faire le "get" que tu veux.
(http://www.cplusplus.com/ref/#libs, clic sur "iostream library", puis sur "ifstream" puis sur "seekg")
mais attention, le paramètre d'entrée de seekg n'est pas si facile a calculer. comme dit précédemment, il ne suffit pas de connaitre x,y et width, mais aussi la taille d'un pixel en octets, le padding et la taille du header; en supposant que je n'oublie rien
heu sinon, il y a SDL et SDL_Image
et en quatre ligne tu a tout ce que tu veux sur toutes les images que tu veux.
en tout cas moi c'est ce que j'utilise
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager