La problématique : comment fusionner 2 images en gérant l'opacité
Il existe la fonction dCopieImage() qui permet de copier une image sur une autre, à l'endroit où on veut... problème, elle ne gère pas l'opacité...
Il existe la fonction dFusionne() qui permet de copier une image sur un autre en gérant l'opacité... problème, on ne peut pas choisir l'endroit où on veut...
Comment faire ?
En opérant pixel par pixel et en utilisant la fonction dFond() qui permet de sélectionner une couleur avec son opacité.
J'ai mis tout ça dans une procédure :
exemple d'utilisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 PROCEDURE Fusion_image(sImage1,sImage2,nPos_x,nPos_y,nOpacite,nCouleur_Transp,iImage_Fusionnee) Res_Dessin est un entier i,j,i_maxi,j_maxi sont des entiers Ma_Couleur est un entier Mon_Opacité est un entier = nOpacite * 2.55 Largeur_IMG_a_copier est un entier = {sImage1}..Largeur Hauteur_IMG_a_copier est un entier = {sImage1}..Hauteur Position_x est un entier = nPos_x Position_y est un entier = nPos_y Res_Dessin =dDébutDessin({sImage2},dAvecOpacité) i_maxi = Hauteur_IMG_a_copier - 1 j_maxi = Largeur_IMG_a_copier - 1 POUR i = 1 A i_maxi POUR j = 1 A j_maxi Ma_Couleur=dPixelCouleur({sImage1},j,i) // si pas transparent SI Ma_Couleur <> nCouleur_Transp ALORS dFond(Ma_Couleur,Null,Null,Mon_Opacité) dRectangle(Position_x+j,Position_y+i,Position_x+j+1,Position_y+i+1) FIN FIN FIN iImage_Fusionnee = {sImage2}
Précisions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iMon_Image est une Image Fusion_image("IMG_1","IMG_2",SAI_x,SAI_y,SAI_PC_opacite,SAI_Coul_transp,iMon_Image) IMG_3 = iMon_Image
- L'image1 est copiée sur l'image2
- l'opacité doit être donnée en %
- la couleur de transparence peut être différente entre les images, c'est pour ça qu'il faut la préciser.
- le dernier paramètre (iMon_Image) permet de pouvoir récupérer l'image fusionné
Bonne utilisation
Partager