ActionScript 3.0, l'essentiel sous la main Adobe Flash Accueil
Fiches
Boutique
Contact
Créer un filtre RVB/TSL
Pour avoir plus d'explication sur le calcul des matrices, consulter ce documents, ou reportez vous à la documentation en ligne d'Adobe.

Voici les filtres permettant de modifier les bitmap à l'aide d'une matrice : Commencez par importer les class nécessaires, surtout si vous utilisez un fichier ActionScript externe :

//Imports Flash
import flash.filters.ColorMatrixFilter;

- Filtre RVB (Rouge, Vert, Bleu) :

//Définition des valeurs RVB (0 à 255)
var R = 153;
var V = 51;
var B = 204;

//Création de la matrice
var matriceCouleur:Array = new Array();
matriceCouleur = matriceCouleur.concat([R/255, 0, 0, 0, 0]); //R
matriceCouleur = matriceCouleur.concat([0, V/255, 0, 0, 0]); //V
matriceCouleur = matriceCouleur.concat([0, 0, B/255, 0, 0]); //B
matriceCouleur = matriceCouleur.concat([0, 0, 0, 1, 0]); //ALPHA

var monFiltre:ColorMatrixFilter = new ColorMatrixFilter(matriceCouleur); //Création d'un filtre avec la matrice

monClip.filters = new Array(monFiltre); //Application du filtre à 'monClip'

- Filtre de la Teinte :

var teinte = 150; //Valeur de la teinte en degrés (0° à 360°)
var T = teinte * Math.PI / 180; //Conversion de la valeur de la teinte en radian

//Définition des variables de luminosité, nécessaire pour calculer la teinte
//selon l'équation de la luminosité : Y = 0,3086xR + 0,6094xG + 0,0820xB
var Rlum = 0.3086; //Red (Rouge)
var Glum = 0.6094; //Green (Vert)
var Blum = 0.0820; //Blue (Bleu)

//Calculs des valeurs RGB (Red, Green, Blue) de la matrice
var R0 = Rlum + Math.cos(T) * (1-Rlum) - Math.sin(T) * Rlum;
var G0 = Glum - Math.cos(T) * Glum - Math.sin(T) * Glum;
var B0 = Blum - Math.cos(T) * Blum + Math.sin(T) * (1-Blum);

var R1 = Rlum - Math.cos(T) * Rlum + Math.sin(T) * 0.143;
var G1 = Glum + Math.cos(T) * (1-Glum) + Math.sin(T) * 0.14;
var B1 = Blum - Math.cos(T) * Blum - Math.sin(T) * 0.283;

var R2 = Rlum - Math.cos(T) * Rlum - Math.sin(T) * (1-Rlum);
var G2 = Glum - Math.cos(T) * Glum + Math.sin(T) * Glum;
var B2 = Blum + Math.cos(T) * (1-Blum) + Math.sin(T) * Blum;

//Création de la matrice
var matriceTeinte:Array = new Array();
matriceTeinte = matriceTeinte.concat([R0, G0, B0, 0, 0]); //R
matriceTeinte = matriceTeinte.concat([R1, G1, B1, 0, 0]); //V
matriceTeinte = matriceTeinte.concat([R2, G2, B2, 0, 0]); //B
matriceTeinte = matriceTeinte.concat([0, 0, 0, 1, 0]); //ALPHA

var monFiltre:ColorMatrixFilter = new ColorMatrixFilter(matriceTeinte); //Création d'un filtre avec la matrice

monClip.filters = new Array(monFiltre); //Application du filtre à 'monClip'

- Filtre de la Saturation :

var saturation = 300; //Valeur de la saturation (-1000 à +1000)
var S = saturation/100; //Conversion de la valeur de la saturation sur un intervale de [-1;1]

//Définition des variables de luminosité, nécessaire pour calculer la teinte
//selon l'équation de la luminosité : Y = 0,3086xR + 0,6094xG + 0,0820xB
var Rlum = 0.3086; //Red (Rouge)
var Glum = 0.6094; //Green (Vert)
var Blum = 0.0820; //Blue (Bleu)

//Calculs des valeurs RGB (Red, Green, Blue) de la matrice
var Sr = (1-S) * Rlum;
var Sv = (1-S) * Glum;
var Sb = (1-S) * Blum;

//Création de la matrice
var matriceSaturation:Array = new Array();
matriceSaturation = matriceSaturation.concat([Sr+S, Sv, Sb, 0, 0]); //R
matriceSaturation = matriceSaturation.concat([Sr, Sv+S, Sb, 0, 0]); //V
matriceSaturation = matriceSaturation.concat([Sr, Sv, Sb+S, 0, 0]); //B
matriceSaturation = matriceSaturation.concat([0, 0, 0, 1, 0]); //ALPHA

var monFiltre:ColorMatrixFilter = new ColorMatrixFilter(matriceSaturation); //Création d'un filtre avec la matrice

monClip.filters = new Array(monFiltre); //Application du filtre à 'monClip'

- Filtre de la Luminosité :

var L = 220; //Valeur de la luminosité (-255 à +255)

//Création de la matrice
var matriceLuminosite:Array = new Array();
matriceLuminosite = matriceLuminosite.concat([1, 0, 0, 0, L]); //R
matriceLuminosite = matriceLuminosite.concat([0, 1, 0, 0, L]); //V
matriceLuminosite = matriceLuminosite.concat([0, 0, 1, 0, L]); //B
matriceLuminosite = matriceLuminosite.concat([0, 0, 0, 1, 0]); //ALPHA

var monFiltre:ColorMatrixFilter = new ColorMatrixFilter(matriceLuminosite); //Création d'un filtre avec la matrice

monClip.filters = new Array(monFiltre); //Application du filtre à 'monClip'

INFO : Si vous souhaitez appliquer ses différents filtres en même temps, allez consulter le chapitre "Combiner plusieurs filtres".

Aperçus & Sources : (Flash CS4)
Commentaire(s)
Aucun.