Probleme urgent

pozor16 Messages postés 1 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 7 février 2006 - 7 févr. 2006 à 12:21
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 7 févr. 2006 à 14:57
Une image est composée d'un ensemble de points (des pixels) dont on peut fixer la couleur en donnant la valeur des 4 composantes qui composent une couleur (le Bleu, le Vert, le Rouge et la Transparence). Toutes ces valeurs sont des entiers (bien qu'ils soient de type char) entre 0 et 255. Par exemple pour avoir une couleur de pixels très rouge, il faut donner ces 4 valeurs: 255,0,0,0.


Une image se représente dans un tableau de char à 1 dimension. Dans ce tableau les pixels de l'image (avec 4 composantes Bleu, Vert, Rouge, Transparence) sont rangés en ligne de haut en bas, et de gauche à droite. Par exemple, le tableau {255,0,0,0, 0,255,0,0, 0,0,255,0 ,255,255,255,0} peut representer une image de 4 pixels. Le premier situé en haut a gauche a les composantes 255,0,0,0 (rouge). Le second 0,255,0,0 (vert) est en haut a droite. 0,0,255,0 (bleu) est en bas a gauche. 255,255,255,0 (blanc) est en bas a droite.


Je travaille sur C++ et doit rendre ce travail très rapidement. Mon problème est que je ne comprend pas comment on fait la fonction affiche_point et quel est la taille du tableau d'image.

#include

#include "image.h"



using namespace std;







void affiche_point(int x,int y,

char* img,int width,int height,
char red 0,char green 0,char blue = 255,char alpha=0) {

/*

* COMPLETEZ ICI

* pour que la fonction affiche un point de couleur (red,green,blue)

* à la position (x,y) de l'image img qui a la taille width et la

* hauteur height

*/

}





void affiche_cercle(int x,int y,int rayon,

char* img,int width,int height,
char red 0,char green 0,char blue = 255,char alpha=0) {

for(int i=0;k centerY;

cout > rayon;



affiche_cercle(centerX,centerY,rayon,img,width,height,255,0,0);

affiche_point(centerX,centerY,img,width,height,255,255,255);



affiche_image(img,width,height);



return 0;

}

5 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
7 févr. 2006 à 12:27
Une image n'est pas un tableau de char mais de BYTE!!! D'ou le 0 à 255 ( FF en hexa pour retrouver les couleurs HTML).
Sinon je ne comprend pas bien ton problème, ni meme le but de ton projet, et ou est l'erreur s'il y en a une!

Shell
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
7 févr. 2006 à 12:32
Et un char c'est un entier :)

if(!Meilleur("Joky")) return ERREUR;<
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
7 févr. 2006 à 13:24
Shell > les BYTE sont des char (8 bits)

sinon pour le problème :
// en considérant que x est l'indice de ligne et y l'indice des colonnes

void affiche_point(int x,int y,
char* img,int width,int height,
char red 0,char green 0,char blue = 255,char alpha=0)
{

img[x*width+y]=red;
img[x*width+y+1]=green;
img[x*width+y+2]=blue;
img[x*width+y+3]=alpha;
}

KeniiyK
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
7 févr. 2006 à 13:27
Et pour l'allocation :
img = new char[width*height*4];

KeniiyK
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
7 févr. 2006 à 14:57
Le code de KeniiyK est bon... à un facteur 4 près :)

img[4*(x*width+y)+0] = red;

img[4*(x*width+y)+1] = green;

img[4*(x*width+y)+2] = blue;

img[4*(x*width+y)+3] = alpha;


Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
Rejoignez-nous