Unité uGBEImageUtils.pas - gbegreg/GBE3D GitHub Wiki

Unité uGBEImageUtils.pas

Cette unité contient diverses méthodes de manipulations d'image.

Méthode generateDiamondSquare

function generateDiamondSquare(size, blurLevel : integer; color: TAlphaColor = TAlphaColorRec.White; bordure : boolean = false; colorBordure : TAlphaColor = TAlphaColorRec.Black): TBitmap;

Cette méthode permet de renvoyer une image TBitmap de taille size x size. Cette image est générée à l'aide de l'algorithme de génération de bruit de type Diamant carré ([Wikipedia](// https://fr.wikipedia.org/wiki/Algorithme_Diamant-Carr%C3%A9)). L'image générée sera carrée de size pixels de côté.

La méthode prend en paramètre : size de type integer est la taille en pixel d'un côté de l'image; blurLevel de type integer est le niveau de flou souhaité (0 aucun flou); color de type TAlphaColorRec correspond à la couleur de départ de l'algorithme; bordure de type boolean permet d'indiquer si l'image générée aura une bordure ou non; colorBordure de type TAlphaColorRec permet de spécifier la couleur de la bordure.

La démo GenererBruit permet d'avoir un exemple d'utilisation de cette méthode.

Méthode tileImage

function tileImage(imageOrigine : TBitmap; nbX, nbY : integer): TBitmap;

Cette méthode permet de dupliquer l'image d'origine nbX fois sur la largeur et nbY fois sur la hauteur. L'image retournée est donc une image de largeur imageOrigine.width x nbX et de hauteur imageOrigine.height x nbY. Cela permet par exemple de générer une texture plus grande à partir de petites textures.

Méthode cropImage

function cropImage(originBitmap : TBitmap; Xpos, Ypos, width, height: integer): TBitmap;

Cette méthode permet de ne prendre qu'une partie d'une image et renvoie cette partie de l'image d'origine dans un TBitmap.

Méthode MultiTexturing

function MultiTexturing(imgCarte, imgFond, imgCanalRouge, imgCanalVert, imgCanalBleu : TBitmap; tailleCrop : integer): TBitmap;

Cette méthode permet de générer un TBitmap résultant du traitement de multitexturing. Le bitmap résultat aura les mêmes dimensions que imgCarte passé en paramètre.

**imgCarte **est le bitmap contenant la "carte" de ce que l'on souhaite faire. Il s'agit d'une image où la couleur de chaque pixel indiquera la texture à appliquer pour ce pixel dans le bitmap résultat. Cette image peut avoir 4 couleurs majeures : noire, rouge, vert et bleu. Il peut également avoir les dégradés noir/rouge, noir/vert et noir/bleu. Dans le cas d'un pixel ayant entre le noir et le rouge, le pixel correspondant dans le bitmap résultat sera d'une couleur combinant la couleur du pixel correspondant dans le bitmap imgFond et imgCanalRouge.

**imgFond ** est le bitmap contenant la texture du fond. C'est celle qui sera appliquée par défaut et qui servira de base pour tous les pixels du bitmap résultat.

**imgCanalRouge ** est le bitmap contenant la texture qui sera utilisée pour calculer les couleurs des pixels dont la couleur dans imgCarte tire sur le rouge.

**imgCanalVert ** est le bitmap contenant la texture qui sera utilisée pour calculer les couleurs des pixels dont la couleur dans imgCarte tire sur le vert.

**imgCanalBleu ** est le bitmap contenant la texture qui sera utilisée pour calculer les couleurs des pixels dont la couleur dans imgCarte tire sur le bleu.

**tailleCrop ** est un entier qui précise la taille (en pixel) du découpage de imgCarte. En effet, les textures fournies peuvent être plus petites que l'imgCarte. Exemple si imgCarte est une image de 2048x2048 pixels et que les textures sont en 512x512, alors tailleCrop peut prendre au maximum la valeur de 512.

La démo Multitexturing est un exemple d'utilisation.

Méthode MultiTexturingZone

MultiTexturingZone(img : TBitmap): TBitmap;

Cette méthode, appelée par MultiTexturing, permet de réaliser le traitement sur la zone "découpée" de la carte.

Méthode mixerCouleurPixel

function mixerCouleurPixel(cCarte : TAlphaColor; x, y: integer): TAlphaColor;

Cette méthode renvoie la couleur résultante du mixage de la texture de fond et de la texture de la couleur dominante du pixel à traiter (pixel au coordonnée [x,y] de l'imgCarte).