Probleme urgent

Signaler
Messages postés
1
Date d'inscription
mardi 7 février 2006
Statut
Membre
Dernière intervention
7 février 2006
-
Messages postés
15039
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 mai 2021
-
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

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et un char c'est un entier :)

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Et pour l'allocation :
img = new char[width*height*4];

KeniiyK
Messages postés
15039
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
18 mai 2021
94
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