Package | flash.filters |
Classe | public class ConvolutionFilter |
Héritage | ConvolutionFilter BitmapFilter Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Pour créer un filtre de convolution, utilisez la syntaxe new ConvolutionFilter()
. L’utilisation de filtres dépend de l’objet auquel vous appliquez le filtre.
- Pour appliquer des filtres aux clips, champs de texte, boutons et vidéo, utilisez la propriété
filters
(héritée de DisplayObject). Lorsque vous définissez la propriétéfilters
d’un objet, celui-ci n’est pas modifié. En outre, vous pouvez supprimer la propriétéfilters
pour enlever le filtre. - Pour appliquer des filtres aux objets BitmapData, utilisez la méthode
BitmapData.applyFilter()
. L’appel deapplyFilter()
pour un objet BitmapData génère une image filtrée à partir de l’objet BitmapData source et de l’objet filtre.
Si vous appliquez un filtre à un objet d’affichage, la valeur de la propriété cacheAsBitmap
de cet objet est définie sur true
. Si vous supprimez tous les filtres, la valeur d’origine de cacheAsBitmap
est restaurée.
Aucun filtre n’est appliqué si l’image obtenue dépasse les dimensions maximales. Dans AIR 1.5 et Flash Player 10, la taille maximale est de 8 191 pixels en largeur ou en hauteur, et le nombre total de pixels ne peut pas excéder 16 777 215 pixels (ainsi, si la largeur d’une image est de 8 191 pixels, sa hauteur maximale doit être de 2 048 pixels). Dans Flash Player 9 et les versions antérieures, ainsi que dans AIR 1.1 et les versions antérieures, la limite est de 2 880 pixels de haut sur 2 880 pixels de large. Par exemple, lorsque vous effectuez un zoom avant sur un clip de grande taille auquel un filtre est appliqué, le filtre sera désactivé si l’image obtenue dépasse les dimensions maximales.
Eléments de l’API associés
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
Propriété | Défini par | ||
---|---|---|---|
alpha : Number
Valeur de transparence alpha de la couleur de substitution. | ConvolutionFilter | ||
bias : Number
Ecart à ajouter au résultat de la transformation de matrice. | ConvolutionFilter | ||
clamp : Boolean
Indique si l’image doit être corrigée. | ConvolutionFilter | ||
color : uint
Couleur hexadécimale à substituer aux pixels provenant de l’image source. | ConvolutionFilter | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
divisor : Number
Diviseur utilisé pendant la transformation de matrice. | ConvolutionFilter | ||
matrix : Array
Tableau des valeurs utilisées pour la transformation de matrice. | ConvolutionFilter | ||
matrixX : Number
Dimension x de la matrice (le nombre de colonnes de la matrice). | ConvolutionFilter | ||
matrixY : Number
Dimension y de la matrice (le nombre de lignes de la matrice). | ConvolutionFilter | ||
preserveAlpha : Boolean
Indique si le canal alpha est conservé ou si le filtre de convolution s’applique aussi bien à lui qu’aux canaux de couleur. | ConvolutionFilter |
Méthode | Défini par | ||
---|---|---|---|
ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
Initialise une occurrence de ConvolutionFilter avec les paramètres spécifiés. | ConvolutionFilter | ||
[override]
Renvoie une copie de cet objet filtre. | ConvolutionFilter | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object |
alpha | propriété |
alpha:Number
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Valeur de transparence alpha de la couleur de substitution. Les valeurs valides sont comprises entre 0 et 1.0. La valeur par défaut est de 0. Par exemple, 0,25 définit une valeur de transparence de 25 %.
Implémentation
public function get alpha():Number
public function set alpha(value:Number):void
bias | propriété |
bias:Number
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Ecart à ajouter au résultat de la transformation de matrice. L’écart augmente la valeur de couleur de chaque canal de telle sorte que les couleurs sombres paraissent plus vives. La valeur par défaut est 0.
Implémentation
public function get bias():Number
public function set bias(value:Number):void
clamp | propriété |
clamp:Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Indique si l’image doit être corrigée. Pour les pixels provenant de l’image source, la valeur true
indique que l’image d’entrée est agrandie autant que nécessaire au niveau de ses bordures en dupliquant les valeurs de couleur de chacun de ses bords respectifs. La valeur false
indique qu’il faut utiliser une autre couleur, comme spécifié dans les propriétés color
et alpha
. La valeur par défaut est true
.
Implémentation
public function get clamp():Boolean
public function set clamp(value:Boolean):void
Exemple ( Comment utiliser cet exemple )
BitmapData
, l’une de ces zones est moitié plus petite que l’autre. Lorsque l’exemple est chargé pour la première fois, la zone la plus grande est dessinée à l’intérieur de mc
à l’aide de attachBitmap()
. Lorsque l’utilisateur clique sur mc
et que la méthode applyFilter()
est appelée, l’occurrence largeBox
de BitmapData
est redessinée avec smallBox
comme image bitmap source. Etant donné que applyFilter()
dessine la zone smallBox
selon un Rectangle
dont la largeur et la hauteur sont spécifiées comme étant celles de la zone largeBox
, l’image bitmap source est plus petite que l’espace de dessin. Dans ce cas, la propriété clamp
de ConvolutionFilter
est définie sur false
et la zone qui n’est pas couverte par l’image bitmap source, en l’occurrence smallBox
, est de couleur rouge uni tel que déterminé par les variables clampColor
et clampAlpha
.
package { import flash.display.Sprite; import flash.display.BitmapData; import flash.filters.ConvolutionFilter; import flash.text.TextField; import flash.geom.Rectangle; import flash.geom.Point; public class ConvolutionClampExample extends Sprite { // Variables that affect clamping: var clamp:Boolean = false; var clampColor:Number = 0xFF0000; var clampAlpha:Number = 1; // For illustration, keep other ConvolutionFilter variables neutral: var bias:Number = 0; var preserveAlpha:Boolean = false; // Also, construct a neutral matrix var matrixCols:Number = 3; var matrixRows:Number = 3; var matrix:Array = [ 1,1,1, 1,1,1, 1,1,1 ]; var filter:ConvolutionFilter = new ConvolutionFilter(matrixCols, matrixRows, matrix, matrix.length, bias, preserveAlpha, clamp, clampColor, clampAlpha); var largeBoxWidth:Number = 100; var largeBoxHeight:Number = 100; var largeBox:BitmapData = new BitmapData(largeBoxWidth, largeBoxWidth, true, 0xCC00FF00); var smallBoxWidth:Number = largeBoxWidth / 2; var smallBoxHeight:Number = largeBoxHeight / 2; var smallBox:BitmapData = new BitmapData(smallBoxWidth, smallBoxWidth, true, 0xCC0000FF); var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc.attachBitmap(largeBox, this.getNextHighestDepth()); mc.onPress = function() { largeBox.applyFilter(smallBox, new Rectangle(0,0, largeBoxWidth, largeBoxHeight), new Point(0,0), filter); } } }
color | propriété |
color:uint
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Couleur hexadécimale à substituer aux pixels provenant de l’image source. C’est une valeur RVB sans composant alpha. La valeur par défaut est 0.
Implémentation
public function get color():uint
public function set color(value:uint):void
divisor | propriété |
divisor:Number
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Diviseur utilisé pendant la transformation de matrice. La valeur par défaut est 1. Un diviseur correspondant à la somme de toutes les valeurs de matrice atténue l’intensité globale des couleurs du résultat. La valeur 0 est ignorée ; elle est remplacée par la valeur par défaut.
Implémentation
public function get divisor():Number
public function set divisor(value:Number):void
matrix | propriété |
matrix:Array
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Tableau des valeurs utilisées pour la transformation de matrice. Le nombre d’éléments dans le tableau doit être égal à matrixX * matrixY
.
Une convolution de matrice s’articule autour d’une matrice n par m qui décrit la façon dont une valeur de pixels donnée dans l’image d’entrée est associée aux valeurs des pixels environnants pour obtenir une nouvelle valeur de pixels. Chaque pixel obtenu est déterminé par l’application de la matrice au pixel source correspondant et à ses pixels environnants.
Pour une convolution de matrice 3 par 3, la formule suivante est utilisée pour chaque canal de couleur indépendant :
dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....
src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias
Certaines spécifications de filtre s’exécutent plus rapidement lorsque le processeur utilisé pour leur exécution est doté d’extensions Streaming SIMD (SSE). Les critères suivants favorisent des convolutions plus rapides :
- Le filtre doit être un filtre 3 par 3.
- Tous les termes du filtre doivent être des entiers compris entre -127 et +127.
- La valeur absolue correspondant à la somme de tous les termes du filtre ne doit pas être supérieure à 127.
- Si un terme de filtre est négatif, le diviseur doit être compris entre 2,00001 et 256.
- Si tous les termes de filtre sont positifs, le diviseur doit être compris entre 1,1 et 256.
- L’écart doit être un entier.
Remarque : si vous créez une occurrence de ConvolutionFilter à l’aide du constructeur sans paramètres, l’ordre dans lequel vous affectez des valeurs aux propriétés de la matrice modifie le comportement du filtre. Dans le cas suivant, le tableau de la matrice est affecté alors que les propriétés matrixX
et matrixY
sont toujours définies sur 0
(valeur par défaut) :
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0]; myfilter.matrixX = 3; myfilter.matrixY = 3;
Dans le cas suivant, le tableau de la matrice est affecté alors que les propriétés matrixX
et matrixY
sont définies sur 3
:
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrixX = 3; myfilter.matrixY = 3; myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
Implémentation
public function get matrix():Array
public function set matrix(value:Array):void
Valeur émise
TypeError — La valeur du tableau est null au moment de sa définition.
|
matrixX | propriété |
matrixY | propriété |
preserveAlpha | propriété |
preserveAlpha:Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Indique si le canal alpha est conservé ou si le filtre de convolution s’applique aussi bien à lui qu’aux canaux de couleur. La valeur false
indique que la convolution s’applique à tous les canaux, y compris le canal alpha. La valeur true
indique que la convolution s’applique uniquement aux canaux de couleur. La valeur par défaut est true
.
Implémentation
public function get preserveAlpha():Boolean
public function set preserveAlpha(value:Boolean):void
ConvolutionFilter | () | Constructeur |
public function ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Initialise une occurrence de ConvolutionFilter avec les paramètres spécifiés.
ParamètresmatrixX:Number (default = 0 ) — Dimension x de la matrice (nombre de colonnes de la matrice). La valeur par défaut est 0.
| |
matrixY:Number (default = 0 ) — Dimension y de la matrice (nombre de lignes de la matrice). La valeur par défaut est 0.
| |
matrix:Array (default = null ) — Tableau des valeurs utilisées pour la transformation de matrice. Le nombre d’éléments dans le tableau doit être égal à matrixX * matrixY .
| |
divisor:Number (default = 1.0 ) — Diviseur utilisé pendant la transformation de matrice. La valeur par défaut est 1. Un diviseur correspondant à la somme de toutes les valeurs de matrice atténue l’intensité de couleurs globale du résultat. La valeur 0 est ignorée ; elle est remplacée par la valeur par défaut.
| |
bias:Number (default = 0.0 ) — Ecart à ajouter au résultat de la transformation de matrice. La valeur par défaut est 0.
| |
preserveAlpha:Boolean (default = true ) — La valeur false indique que la valeur alpha n’est pas conservée et que la convolution s’applique à tous les canaux, y compris le canal alpha. La valeur true indique que la convolution s’applique uniquement aux canaux de couleur. La valeur par défaut est true .
| |
clamp:Boolean (default = true ) — Pour les pixels provenant de l’image source, la valeur true indique que l’image d’entrée est agrandie autant que nécessaire au niveau de ses bordures en dupliquant les valeurs de couleur sur le bord donné. La valeur false indique qu’il faut utiliser une autre couleur, comme spécifié dans les propriétés color et alpha . La valeur par défaut est true .
| |
color:uint (default = 0 ) — Couleur hexadécimale à substituer aux pixels provenant de l’image source.
| |
alpha:Number (default = 0.0 ) — Alpha de la couleur de substitution.
|
clone | () | méthode |
override public function clone():BitmapFilter
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
Renvoie une copie de cet objet filtre.
Valeur renvoyéeBitmapFilter — BitmapFilter Nouvelle occurrence de ConvolutionFilter dont les propriétés sont toutes identiques à celles de l’occurrence de ConvolutionMatrixFilter d’origine.
|
buildChild()
pour charger et afficher quatre occurrences de l’image. Chaque appel à buildChild()
prend comme argument une fonction qui n’applique aucun filtre à la première occurrence, mais un filtre de convolution différent à chaque occurrence ultérieure.
La fonction buildChild()
crée un nouvel objet Loader appelé loader
. Pour chaque appel à buildChild()
, joignez un écouteur d’événements à l’objet Loader pour écouter les événements complete
qui sont gérés par la fonction transmise à buildChild()
.
Les fonctions applyBrightness()
, applySharpness()
et applyOutline()
utilisent différentes valeurs pour le tableau matrix
afin d’obtenir différents effets ConvolutionFilter.
Remarque : pour de meilleurs résultats, utilisez une image d’une largeur de 80 pixels environ. Le nom et l’emplacement du fichier image doivent correspondre à la valeur que vous transmettez à la propriété url
. En l’occurrence, dans l’exemple, la valeur transmise à url
pointe vers un fichier image nommé « Image.jpg » qui est situé dans le même répertoire que votre fichier SWF.
package { import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.filters.BitmapFilter; import flash.filters.ConvolutionFilter; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class ConvolutionFilterExample extends Sprite { private var size:uint = 140; private var url:String = "Image.jpg"; public function ConvolutionFilterExample() { buildChild(applyNothing); buildChild(applyBrightness); buildChild(applySharpness); buildChild(applyOutline); } private function buildChild(loadHandler:Function):void { var loader:Loader = new Loader(); loader.x = numChildren * size; loader.y = size; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); if(loadHandler != null) { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler); } var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function applyNothing(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); applyLabel(child, "no filter"); } private function applyBrightness(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [5, 5, 5, 5, 0, 5, 5, 5, 5]; applyFilter(child, matrix); applyLabel(child, "brightness"); } private function applySharpness(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [0, -1, 0, -1, 20, -1, 0, -1, 0]; applyFilter(child, matrix); applyLabel(child, "sharpness"); } private function applyOutline(event:Event):void { var child:DisplayObject = DisplayObject(event.target.loader); var matrix:Array = [-30, 30, 0, -30, 30, 0, -30, 30, 0]; applyFilter(child, matrix); applyLabel(child, "outline"); } private function applyFilter(child:DisplayObject, matrix:Array):void { var matrixX:Number = 3; var matrixY:Number = 3; var divisor:Number = 9; var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor); var filters:Array = new Array(); filters.push(filter); child.filters = filters; } private function applyLabel(child:DisplayObject, label:String):void { var tf:TextField = new TextField(); tf.x = child.x; tf.y = child.height; tf.autoSize = TextFieldAutoSize.LEFT; tf.text = label; addChild(tf); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
Tue Jun 12 2018, 09:30 AM Z