[C] Convertir GetPixel en RGB

Convertir GetPixel en RGB [C] - Programmation

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]

Reply

Marsh Posté le 20-06-2001 à 11:02:22   

Reply

Marsh Posté le 20-06-2001 à 11:10:03    

Ben... a la main :eek:
 
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 :??:

Reply

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

Reply

Marsh Posté le 20-06-2001 à 11:43:46    

Oui, mais comment faire pour connaitre la couleur de chaque pixel d'un bitmap?

Reply

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) ??

Reply

Marsh Posté le 20-06-2001 à 11:53:29    

je sens que c'est pas gagné ce topic... :D

Reply

Marsh Posté le 20-06-2001 à 11:57:02    

minusplus a écrit a écrit :

je sens que c'est pas gagné ce topic... :D




Pourquoi? :D
 
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.

Reply

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.

Reply

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?

Reply

Marsh Posté le 20-06-2001 à 12:09:24    

c ecrit dans mon post juste au dessus :sarcastic:

Reply

Marsh Posté le 20-06-2001 à 12:09:24   

Reply

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 ?

Reply

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 !

Reply

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

Reply

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.

Reply

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;
}

Reply

Marsh Posté le 20-06-2001 à 19:57:58    

Allez please :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed