Pacote | flash.filters |
Classe | public class ConvolutionFilter |
Herança | ConvolutionFilter BitmapFilter Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Para criar um filtro de convolução, use a sintaxe new ConvolutionFilter()
. O uso dos filtros depende do objeto ao qual você vai aplicar o filtro:
- Para aplicar filtros em clipes de filme, campos de texto, botões e vídeo, use a propriedade
filters
(herdada do DisplayObject). Definir a propriedadefilters
de um objeto não modifica o objeto e você pode remover o filtro limpando a propriedadefilters
. - Para aplicar os filtros aos objetos BitmapData, use o método
BitmapData.applyFilter()
. A ação de chamar oapplyFilter()
em um objeto BitmapData usa o objeto BitmapData de origem e o objeto do filtro e cria uma imagem filtrada como resultado.
Se você aplicar um filtro a um objeto de exibição, o valor da propriedade cacheAsBitmap
do objeto é definido como true
. Se você limpar todos os filtros, o valor original de cacheAsBitmap
é restaurado.
Um filtro não é aplicado caso a imagem resultante exceda as dimensões máximas. No AIR 1.5 e no Flash Player 10, o máximo é de 8,191 pixels de largura ou de altura, e o número total de pixels não pode exceder 16,777,215 pixels. (Dessa forma, caso uma imagem tenha 8,191 pixels de largura, ela só pode ter 2.048 pixels de altura.) No Flash Player 9 e anteriores e no AIR 1.1 e anteriores, a limitação é de 2.880 pixels de altura e de 2.880 pixels de largura. Por exemplo, se você aumentar o zoom em um clipe de filme grande com um filtro aplicado, o filtro será desativado se a imagem resultante exceder as dimensões máximas.
Elementos da API relacionados
flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
matrix
Propriedade | Definido por | ||
---|---|---|---|
alpha : Number
Valor de transparência alfa da cor substituta. | ConvolutionFilter | ||
bias : Number
Quantidade de desvio a ser adicionado ao resultado da transformação de matriz. | ConvolutionFilter | ||
clamp : Boolean
Indica se a imagem devem ser fixada. | ConvolutionFilter | ||
color : uint
Cor hexadecimal para substituir pixels que estão fora da imagem de origem. | ConvolutionFilter | ||
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
divisor : Number
Divisor usado durante a transformação de matriz. | ConvolutionFilter | ||
matrix : Array
Matriz de valores usados para transformação de matriz. | ConvolutionFilter | ||
matrixX : Number
Dimensão x da matriz (número de colunas na matriz). | ConvolutionFilter | ||
matrixY : Number
Dimensão y da matriz (número de linhas na matriz). | ConvolutionFilter | ||
preserveAlpha : Boolean
Indica se o canal alfa é preservado sem o efeito de filtro ou se o filtro de convolução é aplicado ao canal alfa e aos canais de cor. | ConvolutionFilter |
Método | Definido por | ||
---|---|---|---|
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)
Inicializa uma ocorrência ConvolutionFilter com os parâmetros especificados. | ConvolutionFilter | ||
[substituir]
Retorna uma cópia deste objeto de filtro. | ConvolutionFilter | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object |
alpha | propriedade |
alpha:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Valor de transparência alfa da cor substituta. Os valores válidos são 0 a 1,0. O padrão é 0. Por exemplo, ,25 define um valor de transparência de 25%.
Implementação
public function get alpha():Number
public function set alpha(value:Number):void
bias | propriedade |
bias:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Quantidade de desvio a ser adicionado ao resultado da transformação de matriz. O desvio aumenta o valor de cor de cada canal para que as cores escuras pareçam mais brilhantes. O valor padrão é 0.
Implementação
public function get bias():Number
public function set bias(value:Number):void
clamp | propriedade |
clamp:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Indica se a imagem devem ser fixada. Para pixels fora da imagem de origem, um valor true
indica que a imagem de entrada é estendida ao longo de cada uma de suas bordas, conforme necessário, duplicando os valores de cor em cada borda respectiva da imagem de entrada. Um valor de false
indica que outra cor deve ser usada, conforme especificado nas propriedades color
e alpha
. O padrão é true
.
Implementação
public function get clamp():Boolean
public function set clamp(value:Boolean):void
Exemplo ( Como usar este exemplo )
BitmapData
, uma delas é metade do tamanho da outra. Quando o exemplo é carregado pela primeira vez, a caixa maior é desenhada dentro de mc
usando o attachBitmap()
. Quando mc
é clicado e o método applyFilter()
é chamado, a ocorrência largeBox
de BitmapData
é redesenhada com smallBox
como um bitmap de origem. Uma vez que applyFilter()
desenha smallBox
sobre um Rectangle
cuja largura e altura são especificadas como as de largeBox
, o bitmap de origem fica menor do que a área de desenho. A propriedade clamp
de ConvolutionFilter
nesse caso é definida como false
e a área que não é coberta pelo bitmap de origem, o smallBox
, é um vermelho sólido conforme determinado pelas variáveis clampColor
e 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 | propriedade |
color:uint
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Cor hexadecimal para substituir pixels que estão fora da imagem de origem. É um valor RGB sem componente alfa. O padrão é 0.
Implementação
public function get color():uint
public function set color(value:uint):void
divisor | propriedade |
divisor:Number
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Divisor usado durante a transformação de matriz. O valor padrão é 1. Um divisor que é a soma de todos os valores de matriz suaviza a intensidade geral de cores do resultado. Um valor 0 é ignorado e o padrão é usado em seu lugar.
Implementação
public function get divisor():Number
public function set divisor(value:Number):void
matrix | propriedade |
matrix:Array
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Matriz de valores usados para transformação de matriz. O número de itens na matriz deve ser igual a matrixX * matrixY
.
Uma convolução de matriz é baseada em uma matriz n x m, que descreve como um determinado valor de pixel na imagem de entrada é combinado com seus valores de pixel próximos para produzir um valor de pixel resultante. Cada pixel resultante é determinado pela aplicação da matriz ao pixel de origem correspondente e a seus pixels próximos.
Para uma convolução de matriz 3 x 3, a fórmula a seguir é usada para cada canal de cor independente:
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
Determinadas especificações de filtro são realizadas mais rapidamente quando executadas por um processador que oferece SSE (Streaming SIMD Extensions). Veja em seguida os critérios para operações de convolução mais rápidas:
- O filtro deve ser um filtro 3x3.
- Todos os termos do filtro devem ser inteiros entre -127 e +127.
- A soma de todos os termos do filtro não deve ter um valor absoluto maior do que 127.
- Se algum termo do filtro for negativo, o divisor deve estar entre 2,00001 e 256.
- Se todos os termos do filtro forem positivos, o divisor deve estar entre 1,1 e 256.
- O desvio deve ser um inteiro.
Observação: Se você criar uma ocorrência ConvolutionFilter usando o construtor sem parâmetros, a ordem atribuída aos valores para as propriedades da matriz afetará o comportamento do filtro. No caso a seguir, a matriz é atribuída enquanto as propriedades matrixX
e matrixY
ainda são definidas como 0
(valor padrão):
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0]; myfilter.matrixX = 3; myfilter.matrixY = 3;
No caso a seguir, a matriz é atribuída enquanto as propriedades matrixX
e matrixY
são definidas como 3
:
public var myfilter:ConvolutionFilter = new ConvolutionFilter(); myfilter.matrixX = 3; myfilter.matrixY = 3; myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
Implementação
public function get matrix():Array
public function set matrix(value:Array):void
Lança
TypeError — A Matriz fica nula quando está sendo definida
|
matrixX | propriedade |
matrixY | propriedade |
preserveAlpha | propriedade |
preserveAlpha:Boolean
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Indica se o canal alfa é preservado sem o efeito de filtro ou se o filtro de convolução é aplicado ao canal alfa e aos canais de cor. Um valor false
indica que a convolução se aplica a todos os canais, incluindo o canal alfa. Um valor de true
indica que a convolução se aplica somente aos canais de cor. O valor padrão é true
.
Implementação
public function get preserveAlpha():Boolean
public function set preserveAlpha(value:Boolean):void
ConvolutionFilter | () | Construtor |
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)
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Inicializa uma ocorrência ConvolutionFilter com os parâmetros especificados.
ParâmetrosmatrixX:Number (default = 0 ) — Dimensão x da matriz (número de colunas na matriz). O valor padrão é 0.
| |
matrixY:Number (default = 0 ) — Dimensão y da matriz (número de linhas na matriz). O valor padrão é 0.
| |
matrix:Array (default = null ) — Matriz de valores usados para transformação de matriz. O número de itens na matriz deve ser igual a matrixX * matrixY .
| |
divisor:Number (default = 1.0 ) — Divisor usado durante a transformação de matriz. O valor padrão é 1. Um divisor que é a soma de todos os valores de matriz compensa a intensidade geral de cores do resultado. Um valor 0 é ignorado e o padrão é usado em seu lugar.
| |
bias:Number (default = 0.0 ) — O desvio a ser adicionado ao resultado da transformação de matriz. O valor padrão é 0.
| |
preserveAlpha:Boolean (default = true ) — Um valor false indica que o valor alfa não está preservado e que a convolução se aplica a todos os canais, incluindo o canal alfa. Um valor de true indica que a convolução se aplica somente aos canais de cor. O valor padrão é true .
| |
clamp:Boolean (default = true ) — Para pixels que estão fora da imagem de origem, um valor de true indica que a imagem de entrada é estendida ao longo de cada uma de suas bordas, conforme necessário, duplicando os valores de cor na borda específica da imagem de entrada. Um valor de false indica que outra cor deve ser usada, conforme especificado nas propriedades color e alpha . O padrão é true .
| |
color:uint (default = 0 ) — Cor hexadecimal para substituir pixels que estão fora da imagem de origem.
| |
alpha:Number (default = 0.0 ) — Alfa da cor substituta.
|
clone | () | método |
override public function clone():BitmapFilter
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9 |
Retorna uma cópia deste objeto de filtro.
RetornaBitmapFilter — BitmapFilter Uma nova ocorrência ConvolutionFilter com todas as mesmas propriedades que a ocorrência ConvolutionMatrixFilter original.
|
buildChild()
quatro vezes para carregar e exibir quatro ocorrências da imagem. Cada chamada para buildChild()
considera como um argumento uma função que não aplica nenhum filtro à primeira ocorrência e um filtro de convolução diferente para cada ocorrência subsequente.
A função buildChild()
cria um novo objeto Loader chamado loader
. Para cada chamada para buildChild()
, anexe um tratamento de eventos ao objeto Loader para tratar dos eventos complete
, que são manipulados pela função passada para buildChild()
.
As funções applyBrightness()
, applySharpness()
e applyOutline()
usam diferentes valores para a matriz matrix
para obter diferentes efeitos do ConvolutionFilter.
Nota: para obter melhores resultados, use uma imagem de aproximadamente 80 pixels de largura. O nome e o local do arquivo de imagem deve corresponder ao valor passado para a propriedade url
. Por exemplo, o valor passado para url
no exemplo aponta para um arquivo de imagem chamado "Image.jpg" que está no mesmo diretório que seu arquivo 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); } } }
Wed Jun 13 2018, 11:10 AM Z