Convertir GetPixel en RGB [C] - Programmation
Marsh Posté le 20-06-2001 à 11:10:03
Ben... a la main
Tu peux faire un petit utilitaire qui charge une image x*y, qui demande la couleur transparente, et qui te sauvegarde un tableau de booleens x*y correspondant
Marsh Posté le 20-06-2001 à 11:26:12
ben enfait c'est bete et mechant.
Pour chaque pixel de l'image :
Si il est transparent alors mettre true
Sinon mettre False
Marsh Posté le 20-06-2001 à 11:43:46
Oui, mais comment faire pour connaitre la couleur de chaque pixel d'un bitmap?
Marsh Posté le 20-06-2001 à 11:51:37
Ben ca depend de ton format d'image et de la maniere dont tu organise ca dans la memoire.
Simplement, si tu as un BMP 32 bit de taille w*h qui est stocke dans un unsigned int* image par exemple, tu fais simplement :
image[x+y*w] pour avoir la valeur du pixel (x,y) ??
Marsh Posté le 20-06-2001 à 11:57:02
minusplus a écrit a écrit : je sens que c'est pas gagné ce topic... |
Pourquoi?
C'est simplement que je sais pas où son codé les couleurs d'un bitmap, si j'arrive à les trouver c'est bon c'est fini après je sais faire.
Marsh Posté le 20-06-2001 à 11:57:55
par exemple tu peux enregistrer ton image dans un tableaud'int 32bits (format RVBA par exemple). Tu codes ta couleur sur un int et le tour est joué. Il sufit ensuite de faire une comparaison bete et mechante avec toutes les valeurs du tableau.
Marsh Posté le 20-06-2001 à 12:04:53
Oui mais où je trouve l'int caractérisant la couleur du pixel, par exemple, 458*630?
Marsh Posté le 20-06-2001 à 12:09:30
ben soit tu fais un tableau a deux dimensions : t[x][y], soit tu fais un tableau à une dimenseion : t[y*largeur_image+x] par exemple mais ca depends de la manière dont est chargée l'image.
Comment charge tu l'image ? Quel Format ?
Marsh Posté le 20-06-2001 à 12:29:21
darkoli a écrit a écrit : Comment charge tu l'image ? Quel Format ? |
ça c'est la question essentielle !
Marsh Posté le 20-06-2001 à 13:13:47
Et bien déjà, il peut etre utile de connaitre le format bmp non?
http://members.aol.com/bellamyjc/fr/bmpfile.html
Après avoir épluché ça, ça ne devrait pas etre compliqué.
vw
Marsh Posté le 20-06-2001 à 16:00:50
Ben voilà, c'est pas aussi simple, c'est comme je le pensais, il faut trier les infos contenues dans le fichier bitmap pour sortir les couleurs de chaque pixel. Je vais lire un peu de doc et essayer de trouver une méthode.
Marsh Posté le 20-06-2001 à 18:27:11
Bon, j'ai trouvé des fonctions directement dans Windows pour ce que je cherche, mon code donne la valeur RGB d'un pixel d'un bitmap. J'ai juste un problème, j'ai fait un bitmap dont tous les pixels ont comme valeur RGB (50, 100, 150) et ma fonction me renvoit 9856050. Comment convertir ça en (50, 100, 150)?
Voilà le code:
#include <windows.h>
#include <iostream>
using namespace std;
///////////////////////////////////////////////////////////////////
int main()
{
HDC hdcImage;
HBITMAP hbm;
char szBitmap[] = "bitmap.bmp";
int x = 1024;
int y = 768;
long pixelvalue = 0;
hbm = (HBITMAP) LoadImage(GetModuleHandle(NULL), szBitmap, IMAGE_BITMAP, x,
y, LR_CREATEDIBSECTION);
if (hbm == NULL)
hbm = (HBITMAP) LoadImage(NULL, szBitmap, IMAGE_BITMAP, x, y,
LR_LOADFROMFILE | LR_CREATEDIBSECTION);
hdcImage = CreateCompatibleDC(NULL);
SelectObject(hdcImage, hbm);
pixelvalue = GetPixel(hdcImage, 1, 1);
cout << pixelvalue << endl;
while (1)
{
}
return 0;
}
Marsh Posté le 20-06-2001 à 11:02:22
J'aimerais réaliser un bit mask d'une image bitmap en mettant FALSE pour les points dont la couleur est la couleur transparente définie et TRUE pour le reste.
Avez-vous une idée de comment faire ça?
[edit]--Message édité par Alload--[/edit]