/* * Fichier expl_gd2_3.c * * Pour les explications de base, * se reporter à l'article sur gd. */ #include #include int main(void) { FILE *image_png; gdImagePtr image, image_d_avant; int orange, bleu; // On crée une image TrueColor image = gdImageCreateTrueColor(100, 100); // On alloue une couleur orange = gdTrueColor (255, 128, 0); // On trace un rectangleorange gdImageFilledRectangle(image, 0, 0, 100, 100, orange); // On ouvre l'image du premier exercice et on en crée une image image_png = fopen("expl1.png", "r"); image_d_avant = gdImageCreateFromPng (image_png); fclose (image_png); // on copie avec remise à l'échelle de 100x100 pixels en partant de (0,0) de l'ancienne image // on place le résultat de taille 90x90 à (5,5) dans la nouvelle gdImageCopyResampled(image, image_d_avant, 5, 5, 0, 0, 90, 90, 100, 100); // on détruit l'ancienne image en mémoire. gdImageDestroy (image_d_avant); // On alloue une couleur bleue semi transparente bleu = gdTrueColorAlpha(0, 0, 255, gdAlphaTransparent / 2); // on se met en mode écrasement // La où on dessinera il y aura du bleu semi-transparent, c'est tout gdImageAlphaBlending(image, 0); // ontrca eun rectangle gdImageFilledRectangle(image, 10, 10, 90, 30, bleu); // On se met en mode "mélange" // Ce qu'on dessine, se mélange avec ce qu'il y a dessous // 50% de bleu et 50% du dessous gdImageAlphaBlending(image, 1); gdImageFilledRectangle(image, 40, 10, 90, 90, bleu); image_png = fopen("expl3.png", "w"); gdImagePng(image, image_png); fclose(image_png); gdImageDestroy(image); exit (0); }