パッケージflash.display
クラスpublic class BitmapData
継承BitmapData Inheritance Object
実装 IBitmapDrawable

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData クラスを使用すると、Bitmap オブジェクトのデータ (ピクセル) を処理できます。BitmapData クラスのメソッドを使用して、任意のサイズの透明または不透明のビットマップイメージを作成し、実行時にさまざまな方法で操作できます。さらに、flash.display.Loader クラスを使ってロードされるビットマップイメージの BitmapData にアクセスすることもできます。

このクラスを使用すると、ビットマップのレンダリング処理を Flash Player 内部の表示更新ルーチンから分離できます。BitmapData オブジェクトを直接操作することで複雑なイメージを作成できるので、ベクターデータのコンテンツを連続的に再描画するフレーム単位のオーバーヘッドを避けることができます。

BitmapData クラスのメソッドは、(ビットマップ以外の表示オブジェクトでは使用可能な) フィルタを使って設定できないような効果をサポートします。

BitmapData オブジェクトには、ピクセルデータの配列が含まれています。このデータは、完全に不透明なビットマップ、またはアルファチャンネルデータを含む透明なビットマップを表現できます。いずれの種類の BitmapData オブジェクトも 32 ビット整数のバッファーとして保存されます。各 32 ビット整数は、ビットマップ内の 1 つのピクセルのプロパティを決定します。

各 32 ビット整数は、アルファ透明度とピクセルの赤緑青 (ARGB) の値を表す 4 つの 8 ビットチャンネル値 (0 ~ 255) の組み合わせです(ARGB 値では、最上位バイトがアルファチャンネル値を表し、続いて赤、緑、青を表します)。

この 4 つのチャンネル (アルファ、赤、緑、青) は、BitmapData.copyChannel() メソッド、または DisplacementMapFilter.componentX および DisplacementMapFilter.componentY プロパティで使用する場合に数値として表されます。これらの数値は、BitmapDataChannel クラスの次の定数によって表されます。

Bitmap オブジェクトの bitmapData プロパティを使用すると、BitmapData オブジェクトを Bitmap オブジェクトに関連付けることができます。

Graphics.beginBitmapFill() メソッドを使用すると、BitmapData オブジェクトを使って Graphics オブジェクトを塗りつぶすことができます。

AIR ランタイムでは、DockIcon、Icon、InteractiveIcon、SystemTrayIcon の各クラスが、アイコンのビットマップイメージを定義する BitmapData オブジェクトの配列である bitmaps プロパティを含んでいます。

AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さが 8,192 ピクセルであり、ピクセルの合計数が 16,777,216 ピクセルを超えてはなりません(そのため、BitmapData オブジェクトの幅が 8,192 ピクセルである場合、高さは 2,048 ピクセルまでしか設定できません)。Flash Player 9 以前および AIR 1.1 以前では、高さが 2,880 ピクセル以下、幅が 2,880 以下に制限されます。

BitmapData オブジェクトのいずれかのメソッドやプロパティを呼び出したときに、BitmapData オブジェクトが無効なものであった場合(たとえば height == 0 かつ width == 0 の場合)や、dispose() で既に破棄されたものであった場合は、ArgumentError エラーがスローされます。

例を表示

関連項目

flash.display.Bitmap.bitmapData
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  height : int
[読み取り専用] ビットマップイメージの高さ (ピクセル単位) です。
BitmapData
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  rect : Rectangle
[読み取り専用] ビットマップイメージのサイズと位置を定義する矩形です。
BitmapData
  transparent : Boolean
[読み取り専用] ビットマップイメージがピクセル単位の透明度をサポートするかどうかを定義します。
BitmapData
  width : int
[読み取り専用] ビットマップイメージの幅 (ピクセル単位) です。
BitmapData
パブリックメソッド
 メソッド定義元
  
BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
指定された幅と高さで BitmapData オブジェクトを作成します。
BitmapData
  
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
ソースイメージとフィルタオブジェクトを受け取り、フィルタを適用して得られるイメージを生成します。
BitmapData
  
新しい BitmapData オブジェクトとして、元のインスタンスのクローンを返します。含まれるビットマップはまったく同じコピーになります。
BitmapData
  
ColorTransform オブジェクトを使用して、ビットマップイメージの特定領域のカラー値を調整します。
BitmapData
  
compare(otherBitmapData:BitmapData):Object
2 つの BitmapData オブジェクトを比較します。
BitmapData
  
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
別の BitmapData オブジェクトまたは現在の BitmapData オブジェクトの 1 つのチャンネルのデータを、現在の BitmapData オブジェクトのチャンネルに転送します。
BitmapData
  
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
イメージ間のピクセル操作 (伸長、回転、カラー効果なし) を高速に実行するルーチンを提供します。
BitmapData
  
BitmapData オブジェクトの格納に使用されるメモリを解放します。
BitmapData
  
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
source 表示オブジェクトをビットマップイメージ上に描画するには Flash Player または AIR のベクターレンダラを使用します。
BitmapData
  
指定された ARGB カラーで矩形領域のピクセルを塗りつぶします。
BitmapData
  
floodFill(x:int, y:int, color:uint):void
(x, y) 座標を始点として所定の色で塗りつぶすことにより、イメージに対する塗りつぶし処理を実行します。
BitmapData
  
BitmapData オブジェクト、ソース矩形、フィルタオブジェクトを指定して、applyFilter() メソッド呼び出しによって影響を受けるターゲット矩形を決定します。
BitmapData
  
getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
(findColor パラメータが true に設定されている場合) ビットマップイメージ内の指定された色のすべてのピクセルを完全に囲む矩形領域を判別します。または、(findColor パラメータが false に設定されている場合) 指定された色ではないすべてのピクセルを完全に囲む矩形領域を判別します。
BitmapData
  
BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。
BitmapData
  
アルファチャンネルデータと RGB データを含む ARGB カラー値を返します。
BitmapData
  
ピクセルデータの矩形領域からバイト配列を生成します。
BitmapData
  
ピクセルデータの矩形領域からベクター配列を生成します。
BitmapData
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
BitmapData オブジェクトの 256 値のバイナリ数のヒストグラムを計算します。
BitmapData
  
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
1 つのビットマップイメージと、ポイント、矩形、または他のビットマップイメージとの間でピクセルレベルのヒットを検出します。
BitmapData
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト (例えば Bitmap オブジェクト) が更新されないように、イメージをロックします。
BitmapData
  
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
ソースイメージとターゲットイメージをチャンネルごとにブレンドします。
BitmapData
  
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
ランダムノイズを表すピクセルでイメージを塗りつぶします。
BitmapData
  
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
最大で 4 つのカラーパレットデータ配列 (各チャンネルごとに 1 つの配列) を使用して、イメージ内のカラーチャンネル値をマッピングし直します。
BitmapData
  
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Perlin ノイズイメージを生成します。
BitmapData
  
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
ソースイメージからターゲットイメージへのピクセルディゾルブ、または同じイメージを使用したピクセルディゾルブを実行します。
BitmapData
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
  
所定の (x, y) ピクセル量だけイメージをスクロールします。
BitmapData
  
setPixel(x:int, y:int, color:uint):void
BitmapData オブジェクトの 1 つのピクセルを設定します。
BitmapData
  
setPixel32(x:int, y:int, color:uint):void
BitmapData オブジェクトの 1 つのピクセルにカラー値とアルファ透明度を設定します。
BitmapData
  
setPixels(rect:Rectangle, inputByteArray:ByteArray):void
バイト配列をピクセルデータの矩形領域に変換します。
BitmapData
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
setVector(rect:Rectangle, inputVector:Vector.<uint>):void
BitmapData
  
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
指定されたしきい値と比較してイメージ内のピクセル値をテストし、テストに適合したピクセルに新しいカラー値を設定します。
BitmapData
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
  
unlock(changeRect:Rectangle = null):void
この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト (例えば Bitmap オブジェクト) が更新されるように、イメージをロック解除します。
BitmapData
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
heightプロパティ
height:int  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ビットマップイメージの高さ (ピクセル単位) です。



実装
    public function get height():int
rectプロパティ 
rect:Rectangle  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ビットマップイメージのサイズと位置を定義する矩形です。矩形の上端と左端は 0 になります。幅と高さは、BitmapData オブジェクトのピクセルの幅および高さと等しくなります。



実装
    public function get rect():Rectangle
transparentプロパティ 
transparent:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ビットマップイメージがピクセル単位の透明度をサポートするかどうかを定義します。この値を設定できるのは、true を、コンストラクタの transparent パラメータに渡すことによって BitmapData オブジェクトを作成する場合だけです。BitmapData オブジェクトを作成した後、transparent プロパティの値が true であるかどうかを確認することにより、このオブジェクトがピクセルごとの透明度をサポートするかどうかを検査できます。



実装
    public function get transparent():Boolean
widthプロパティ 
width:int  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ビットマップイメージの幅 (ピクセル単位) です。



実装
    public function get width():int
コンストラクタの詳細
BitmapData()コンストラクタ
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定された幅と高さで BitmapData オブジェクトを作成します。fillColor パラメータに値を指定した場合、ビットマップのすべてのピクセルにその色が設定されます。

falsetransparent パラメータに渡さない限り、デフォルトではビットマップが透明として作成されます。不透明のビットマップを作成した後、それを透明のビットマップに変更することはできません。不透明のビットマップに含まれるすべてのピクセルは、24 ビットのカラーチャンネル情報だけを使用します。ビットマップを透明に定義した場合、すべてのピクセルは、アルファ透明チャンネルを含む 32 ビットのカラーチャンネル情報を使用します。

AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さが 8,192 ピクセルであり、ピクセルの合計数が 16,777,216 ピクセルを超えてはなりません(そのため、BitmapData オブジェクトの幅が 8,192 ピクセルである場合、高さは 2,048 ピクセルまでしか設定できません)。Flash Player 9 以前および AIR 1.1 以前では、高さ 2,880 ピクセル、幅 2,880 ピクセルに制限されていました。幅または高さに 2880 より大きい値を指定すると、新しいインスタンスは作成されません。

パラメータ
width:int — ビットマップイメージの幅 (ピクセル単位) です。
 
height:int — ビットマップイメージの高さ (ピクセル単位) です。
 
transparent:Boolean (default = true) — ビットマップイメージがピクセル単位の透明度をサポートするかどうかを指定します。デフォルト値は true です (透明) 。完全に透明なビットマップを作成するには、transparent パラメータの値を true に、fillColor パラメータの値を 0x00000000 (または 0) に設定します。transparent プロパティを false に設定すると、レンダリングのパフォーマンスが若干向上することがあります。
 
fillColor:uint (default = 0xFFFFFFFF) — ビットマップイメージ領域を塗りつぶすのに使用する 32 ビット ARGB カラー値です。デフォルト値は 0xFFFFFFFF (白) です。

例外
ArgumentError — 幅と高さのどちらか一方または両方が最大寸法を超えています。
メソッドの詳細
applyFilter()メソッド
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ソースイメージとフィルタオブジェクトを受け取り、フィルタを適用して得られるイメージを生成します。

このメソッドはビルトインフィルタオブジェクトの動作に依存します (このオブジェクトは、入力ソース矩形によって影響を受けるターゲット矩形を決定します) 。

フィルタを適用した後、結果として得られるイメージが入力イメージよりも大きくなることがあります。例えば、BlurFilter クラスを使用してソース矩形 (50,50,100,100) とターゲットポイント (10,10) をぼかすと、ターゲットイメージで変更される領域は、ぼかしのために、(10,10,60,60) よりも大きくなります。これは、applyFilter() 呼び出し時に内部で発生します。

sourceRect パラメータ(sourceBitmapData パラメータのパラメータ)が内側領域(200 x 200 のイメージ内の (50,50,100,100) など)である場合、フィルタは、sourceRect パラメータの外側にあるソースピクセルを使用して、ターゲット矩形を生成します。

sourceBitmapData パラメータとして指定されたオブジェクトと BitmapData オブジェクトが同じであれば、アプリケーションはオブジェクトの一時コピーを使ってフィルタを実行します。最適なパフォーマンスを得るには、このような状況を避けてください。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ (現在の BitmapData インスタンス) 内のポイントです。
 
filter:BitmapFilter — フィルタ適用処理に使用されるフィルタオブジェクトです。それぞれの種類のフィルタには、次のような要件があります。
  • BlurFilter — このフィルタは、透明または不透明なソースイメージとターゲットイメージを使用できます。イメージのフォーマットが一致しない場合、フィルタ適用中に作成されるソースイメージのコピーがターゲットイメージのフォーマットに合わせられます。
  • BevelFilter、DropShadowFilter、GlowFilter、ChromeFilter — これらのフィルタのターゲットイメージは透明イメージでなければなりません。DropShadowFilter または GlowFilter を呼び出すと、ドロップシャドウまたはグローのアルファチャンネルデータを含むイメージが作成されます。ドロップシャドウはターゲットイメージ上に作成されません。これらのフィルタを不透明なターゲットイメージに対して使用すると、例外がスローされます。
  • ConvolutionFilter — このフィルタは、透明または不透明なソースイメージとターゲットイメージを使用できます。
  • ColorMatrixFilter — このフィルタは、透明または不透明なソースイメージとターゲットイメージを使用できます。
  • DisplacementMapFilter — このフィルタは、透明または不透明なソースイメージとターゲットイメージを使用できますが、イメージの形式はソースとターゲットで同じである必要があります。


例外
TypeError — sourceBitmapData、sourceRect、destPoint、または filter が null です。
 
IllegalOperationError — BitmapData オブジェクトの透明度は、フィルタ操作と互換性がありません。

関連項目




次の例では、BitmapData インスタンスにぼかしフィルタを適用する方法について説明します。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
clone()メソッド 
public function clone():BitmapData

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

新しい BitmapData オブジェクトとして、元のインスタンスのクローンを返します。含まれるビットマップはまったく同じコピーになります。

戻り値
BitmapData — 元のオブジェクトと同一の新しい BitmapData オブジェクトです。



次の例は、BitmapData インスタンスのクローンを作成する方法を示しています。さらに、クローンされた BitmapData インスタンスを変更しても、元のインスタンスは変更されないことを示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000);
var bmd2:BitmapData = bmd1.clone();

bmd1.setPixel32(1, 1, 0xFFFFFFFF);

trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff
trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);

var bm2:Bitmap = new Bitmap(bmd2);
bm2.x = 110;
this.addChild(bm2);
colorTransform()メソッド 
public function colorTransform(rect:Rectangle, colorTransform:ColorTransform):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ColorTransform オブジェクトを使用して、ビットマップイメージの特定領域のカラー値を調整します。矩形がビットマップイメージの境界と一致する場合、このメソッドはイメージ全体のカラー値を変換します。

パラメータ

rect:Rectangle — ColorTransform オブジェクトが適用されるイメージの領域を定義する Rectangle オブジェクトです。
 
colorTransform:ColorTransform — 適用されるカラー変換値を記述する ColorTransform オブジェクトです。


例外
TypeError — rect または colorTransform が null です。

関連項目




次の例は、カラー変換を BitmapData オブジェクトの左半分 (矩形) に適用する方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);

var cTransform:ColorTransform = new ColorTransform();
cTransform.alphaMultiplier = 0.5
var rect:Rectangle = new Rectangle(0, 0, 40, 30);
bmd.colorTransform(rect, cTransform);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
compare()メソッド 
public function compare(otherBitmapData:BitmapData):Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

2 つの BitmapData オブジェクトを比較します。2 つの BitmapData オブジェクトのサイズ (幅と高さ) が同じであれば、メソッドは新しい BitmapData オブジェクトを返します。この新しいオブジェクトの各ピクセルは、2 つのソースオブジェクトのピクセル間の [差分] です。

たとえば、次のような 2 つの BitmapData オブジェクトがあるとします。

     var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800);
     var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600);
     var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
     trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
     

メモ : 2 つの BitmapData オブジェクトを塗りつぶすために使用されるそれぞれの色の RGB 値はわずかに異なります(0xFF0000 と 0xFFAA00)。compare() メソッドの結果として新しい BitmapData オブジェクトが生成され、その各ピクセルは 2 つのビットマップ間の RGB 値の差分を示します。

次のような 2 つの BitmapData オブジェクトがあるとします。両者の RGB カラーは同じですが、アルファ値は異なります。

     var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
     var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
     var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
     trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
     

compare() メソッドの結果として新しい BitmapData オブジェクトが生成され、その各ピクセルは 2 つのビットマップ間のアルファ値の差分を示します。

BitmapData オブジェクトが等しい (幅、高さおよびピクセル値が同じ) 場合、このメソッドは数値 0 を返します。

BitmapData オブジェクトの幅が等しくない場合、このメソッドは数値 -3 を返します。

BitmapData オブジェクトの高さが等しくない場合、幅が同じであれば、このメソッドは数値 -4 を返します。

次の例では、幅の異なる 2 つの Bitmap オブジェクトを比較します (それぞれの幅は 50 と 60) 。

     var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000);
     var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00);
     trace(bmd1.compare(bmd2)); // -4
     

パラメータ

otherBitmapData:BitmapData — ソース BitmapData オブジェクトと比較される BitmapData オブジェクトです。

戻り値
Object — 2 つの BitmapData オブジェクトのサイズ (幅と高さ) が同じであれば、このメソッドは、2 つのオブジェクト間の差分を示す新しい BitmapData オブジェクトを返します (主な説明の項を参照してください) 。2 つの BitmapData オブジェクトが等しい場合、このメソッドは数値 0 を返します。BitmapData オブジェクトの幅が等しくない場合、メソッドは数値 -3 を返します。BitmapData オブジェクトの高さが等しくない場合、メソッドは数値 -4 を返します。

例外
TypeError — otherBitmapData が null です。



次の例では、同じサイズの 2 つの BitmapData オブジェクトを比較した結果であるピクセル値が BitmapData オブジェクトの中に含まれます。

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));
var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16);
trace (diffValue); // 33ffffff

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 60;
copyChannel()メソッド 
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

別の BitmapData オブジェクトまたは現在の BitmapData オブジェクトの 1 つのチャンネルのデータを、現在の BitmapData オブジェクトのチャンネルに転送します。ターゲット BitmapData オブジェクト内のその他のチャンネルのデータはすべて保たれます。

ソースチャンネルの値とターゲットチャンネルの値は、次のいずれかになります。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData オブジェクトを参照することもできます。
 
sourceRect:Rectangle — ソース側の Rectangle オブジェクトです。ビットマップ内のより小さな領域のチャンネルデータだけをコピーするには、BitmapData オブジェクトのサイズ全体よりも小さいソース矩形を指定します。
 
destPoint:Point — 新しいチャンネルデータが配置される矩形領域の左上隅を表すターゲット Point オブジェクトです。ある特定の領域のチャンネルデータだけをターゲットイメージ内の別の領域にコピーするには、(0,0) 以外のポイントを指定します。
 
sourceChannel:uint — ソースチャンネルです。BitmapDataChannel クラスの値 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA) を使用します。
 
destChannel:uint — ターゲットチャンネルです。BitmapDataChannel クラスの値 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA) を使用します。


例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。

関連項目




次の例は、BitmapData オブジェクト内の赤チャンネルを、20×20 ピクセル領域にわたってオブジェクト独自の青チャンネルにコピーする方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);

var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);    
copyPixels()メソッド 
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

イメージ間のピクセル操作 (伸長、回転、カラー効果なし) を高速に実行するルーチンを提供します。このメソッドは、ソースイメージの矩形領域を、ターゲット BitmapData オブジェクトのターゲットポイントにある同じサイズの矩形領域にコピーします。

alphaBitmap パラメータと alphaPoint パラメータを含めれば、2 番目のイメージをソースイメージのアルファソースとして使用できます。ソースイメージにアルファデータがある場合、両方のアルファデータセットを使用して、ソースイメージのピクセルがソースイメージ上に合成されます。alphaPoint パラメータは、アルファイメージ内のポイントであり、ソース側矩形の左上隅に対応するものです。ソースイメージとアルファイメージが交わらない部分のピクセルは、ターゲットイメージにコピーされません。

mergeAlpha プロパティは、透明なイメージを別の透明なイメージにコピーするときにアルファチャンネルを使用するかどうかを制御します。アルファチャンネルを使用してピクセルをコピーするには、mergeAlpha プロパティを true に設定します。mergeAlpha プロパティのデフォルト値は false です。

パラメータ

sourceBitmapData:BitmapData — ピクセルのコピー元となる入力ビットマップイメージです。ソースイメージは、別の BitmapData インスタンスにすることも、現在の BitmapData インスタンスを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ターゲットポイントです。新しいピクセルが配置される矩形領域の左上隅を表します。
 
alphaBitmapData:BitmapData (default = null) — 第 2 のアルファ BitmapData オブジェクトソースです。
 
alphaPoint:Point (default = null) — アルファ BitmapData オブジェクトソース内のポイントです。sourceRect パラメータの左上隅に対応します。
 
mergeAlpha:Boolean (default = false) — アルファチャンネルを使用するには、値を true に設定します。アルファチャンネルを使用せずにピクセルをコピーするには、値を false に設定します。


例外
TypeError — sourceBitmapData、sourceRect または destPoint が null です。



次の例は、1 つの BitmapData オブジェクト内のピクセルを、20×20 ピクセル領域にわたって別の BitmapData オブジェクトにコピーする方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd2.copyPixels(bmd1, rect, pt);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 50;
dispose()メソッド 
public function dispose():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData オブジェクトの格納に使用されるメモリを解放します。

dispose() メソッドをイメージに対して呼び出すと、イメージの高さと幅が 0 に設定されます。それ以降、この BitmapData インスタンスのメソッドまたはプロパティを呼び出すと失敗し、例外がスローされます。




次の例は、dispose() メソッドに対する呼び出し(例外がスロー)の後、BitmapData オブジェクトを呼び出したときの効果を示しています。
import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF

myBitmapData.dispose();
try {
    trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
    trace(error); // ArgumentError
}
draw()メソッド 
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

source 表示オブジェクトをビットマップイメージ上に描画するには Flash Player または AIR のベクターレンダラを使用します。Flash Player または AIR ベクターレンダラ。matrixcolorTransformblendMode、およびターゲット clipRect パラメータを指定することにより、レンダリングの実行方法を制御できます。さらに、必要に応じて、拡大 / 縮小時にビットマップのスムージングを行うかどうかを指定することもできます (これはソースオブジェクトが BitmapData オブジェクトの場合にのみ可能です) 。

このメソッドは、オーサリングツールインターフェイスにおいてオブジェクトに対して標準ベクターレンダラを使ってオブジェクトを描画する方法に直接対応します。

ソース表示オブジェクトは、この呼び出しで適用される変換を使用しません。ライブラリやファイル内に存在するように処理され、マトリックス変換、カラー変換、ブレンドモードはありません。変換プロパティを使って (ムービークリップなどの) 表示オブジェクトを描画するには、transform プロパティオブジェクトを、BitmapData オブジェクトを使用する Bitmap オブジェクトの transform プロパティにコピーすることができます。

このメソッドは、Flash Player 9.0.115.0 以降および Adobe AIR の RTMP でサポートされます。サーバーサイドスクリプトで、Flash Media Server 上のストリームへのアクセスを制御することができます。詳細については、Client.audioSampleAccess プロパティおよび Client.videoSampleAccess プロパティのトピック(『Server-Side ActionScript Language Reference for Adobe Flash Media Server』)を参照してください。

ソースオブジェクトと (Sprite または MovieClip オブジェクトの場合) その子オブジェクトすべてが、呼び出し元の同一のドメインから来たのではない場合、または Security.allowDomain() メソッドを呼び出したことによって呼び出し元にアクセス可能なコンテンツ内に存在しない場合、draw() への呼び出しは SecurityError 例外をスローします。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。

ロードされたビットマップイメージの source としての使用にも制限があります。ロードされたイメージが呼び出し元と同じドメインに存在していた場合、draw() メソッドの呼び出しは成功します。また、イメージのサーバー上のクロスドメインポリシーファイルで、draw() メソッドを呼び出す SWF コンテンツのドメインに対して許可を与えることもできます。その場合は、LoaderContext オブジェクトの checkPolicyFile プロパティを設定し、このオブジェクトを context パラメータとして使用して、イメージのロードに使用する Loader オブジェクトの load() メソッドを呼び出します。これらの制限は、アプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。

Windows では、draw() メソッドは Adobe AIR の HTMLLoader オブジェクトにある HTML ページに組み込まれた SWF コンテンツをキャプチャできません。

draw() メソッドは Adobe AIR では PDF コンテンツをキャプチャできません。また、wmode 属性が "window" に設定されている HTML に埋め込まれた SWF コンテンツをキャプチャできません(Adobe AIR の場合)

パラメータ

source:IBitmapDrawable — BitmapData オブジェクトに描画される表示オブジェクトまたは BitmapData オブジェクトです (DisplayObject およびBitmapData クラスは IBitmapDrawable インターフェイスを実装しています) 。
 
matrix:Matrix (default = null) — ビットマップの座標を拡大 / 縮小、回転、または変換するために使われる Matrix オブジェクトです。マトリックス変換をイメージに適用したくない場合は、(デフォルト new Matrix() コンストラクタを使って作成される) 単位マトリックスにこのパラメータを設定するか、null 値を渡してください。
 
colorTransform:ColorTransform (default = null) — ビットマップのカラー値を調整するために使用する ColorTransform オブジェクトです。オブジェクトが提供されない場合、ビットマップイメージのカラーは変換されません。このパラメータを渡す必要があるが、イメージを変換したくない場合、このパラメータを、デフォルトの new ColorTransform() コンストラクタを使って作成される ColorTransform オブジェクトに設定します。
 
blendMode:String (default = null) — 結果として生成されるビットマップに適用されるブレンドモードを指定する、flash.display.BlendMode クラスのストリング値です。
 
clipRect:Rectangle (default = null) — 描画するソースオブジェクトの領域を定義する矩形オブジェクトです。この値を指定しない場合、クリッピングは発生せず、ソースオブジェクト全体が描画されます。
 
smoothing:Boolean (default = false)matrix パラメータでの拡大 / 縮小または回転により、拡大 / 縮小時または回転時に BitmapData オブジェクトがスムージングされるかどうかを決定するブール値です。smoothing パラメータが適用されるのは、source パラメータが BitmapData オブジェクトである場合のみです。smoothingfalse に設定すると、回転または拡大 / 縮小した BitmapData イメージはピクセル化されたように、またはぎざぎざに表示されます。たとえば、次の 2 つのイメージは、source パラメータの同じ BitmapData オブジェクトを使用していますが、smoothing パラメータは左の true と右の false に設定されています。

2 つのイメージの左側はスムージングあり、右側はスムージングなしです。

smoothingtrue に設定済み)を使用してビットマップを描画すると、smoothingfalse に設定済み)を使用して描画するより時間がかかります。


例外
ArgumentError source パラメータは、BitmapData オブジェクトまたは DisplayObject オブジェクトではありません。
 
SecurityError source オブジェクト、および (Sprite または MovieClip オブジェクトの) すべての子オブジェクトが呼び出し元と同じドメインに属していないか、Security.allowDomain() メソッド呼び出し後に呼び出し元からアクセスできるコンテンツに含まれていません。この制限事項はアプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
 
ArgumentError — source が null であるか、有効な IBitmapDrawable オブジェクトではありません。

関連項目




次の例は、TextField オブジェクトを BitmapData オブジェクトに描画する方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(tf);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);
fillRect()メソッド 
public function fillRect(rect:Rectangle, color:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定された ARGB カラーで矩形領域のピクセルを塗りつぶします。

パラメータ

rect:Rectangle — 塗りつぶす矩形領域です。
 
color:uint — 領域を塗りつぶすため使用される ARGB カラー値です。ARGB カラー値は通常、16 進数形式 (例えば、0xFF336699) で指定します。


例外
TypeError — rect が null です。

関連項目




次の例は BitmapData オブジェクトの矩形領域を青で塗りつぶす方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x0000FF);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
floodFill()メソッド 
public function floodFill(x:int, y:int, color:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

(x , y) 座標を始点として所定の色で塗りつぶすことにより、イメージに対する塗りつぶし処理を実行します。floodFill() メソッドは、各種のペイントプログラムのバケツツールのようなものです。color は、アルファ情報とカラー情報を含む ARGB カラーです。

パラメータ

x:int — イメージの x 座標です。
 
y:int — イメージの y 座標です。
 
color:uint — 塗りとして使用する ARGB カラーです。




次の例では、BitmapData オブジェクトの領域(つまり、ポイント(10, 10)で定義されたピクセルを囲んでいる領域で、すべてのカラーがそのポイントと同じ色になっている)を赤で塗りつぶす方法を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x000000FF);
rect = new Rectangle(15, 15, 25, 25);
myBitmapData.fillRect(rect, 0x000000FF);

myBitmapData.floodFill(10, 10, 0x00FF0000);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);
generateFilterRect()メソッド 
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData オブジェクト、ソース矩形、フィルタオブジェクトを指定して、applyFilter() メソッド呼び出しによって影響を受けるターゲット矩形を決定します。

たとえば、ぼかしフィルタは通常、元のイメージのサイズよりも大きい領域に影響します。デフォルトの BlurFilter インスタンスによってフィルタが適用される 100 x 200 ピクセルのイメージでは、blurX = blurY = 4(-2,-2,104,204) というターゲット矩形を生成します。generateFilterRect() メソッドを使用すると、このターゲット矩形のサイズを前もって知ることができるので、フィルタ処理の前にターゲットイメージを適切なサイズにすることができます。

一部のフィルタでは、ソースイメージのサイズに基づいてターゲット矩形がクリッピングされる場合があります。例えば、内側の DropShadow は、ソースイメージよりも大きい結果を生成しません。この API では、ソース rect パラメータではなく、BitmapData オブジェクトをソースの境界として使用します。

パラメータ

sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
filter:BitmapFilter — ターゲット矩形を算出するために使用するフィルタオブジェクトです。

戻り値
Rectangle — イメージ、sourceRect パラメータ、およびフィルタを使って算出されるターゲット矩形です。

例外
TypeError — sourceRect または filter が null です。



次の例では、generateFilterRect() メソッドを使用して、ぼかしフィルタの結果が占める矩形領域を決定する方法を示しています。generateFilterRect() メソッドの結果は、trace() 関数により出力されます。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();

trace(bmd.generateFilterRect(rect, filter));
// (x=8, y=8, w=44, h=14)

bmd.applyFilter(bmd, rect, pt, filter);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
generateFilterRect() メソッドはフィルタを適用しない点に注意してください。applyFilter() メソッドを呼び出してフィルタを適用します。
getColorBoundsRect()メソッド 
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

(findColor パラメータが true に設定されている場合) ビットマップイメージ内の指定された色のすべてのピクセルを完全に囲む矩形領域を判別します。または、(findColor パラメータが false に設定されている場合) 指定された色ではないすべてのピクセルを完全に囲む矩形領域を判別します。

たとえば、あるソースイメージで、0 以外のアルファチャンネルを含むイメージの矩形を判別するには、パラメータとして {mask: 0xFF000000, color: 0x00000000} を渡します。findColor パラメータが true に設定されている場合、(value & mask) == color であるピクセルの境界を見つけるためにイメージ全体が検索されます (value はピクセルのカラー値) 。findColor パラメータが false に設定されている場合、(value & mask) != color であるピクセルの境界を見つけるためにイメージ全体が検索されます (value はピクセルのカラー値) 。イメージの周囲の空白を判別するには、空白以外のピクセルの境界を見つけるために、{mask: 0xFFFFFFFF, color: 0xFFFFFFFF} を渡してください。

パラメータ

mask:uint — 対象となる ARGB カラーのビットを指定する 16 進数値です。カラー値は、& (ビット単位の論理積 (AND) ) 演算子を使用して、この 16 進数値と組み合わせられます。
 
color:uint — 16 進数値です。(findColortrue に設定されている場合は) 一致すべき ARGB カラー、一致すべきでない ARGB カラー (findColorfalse に設定されている場合) をそれぞれ指定します。
 
findColor:Boolean (default = true) — 値が true に設定された場合、イメージ内のカラー値の境界を返します。値が false に設定された場合、イメージ内の指定されたカラーが存在しない領域の境界を返します。

戻り値
Rectangle — 指定された色であるイメージの領域です。



次の例では、上半分のピクセルが赤である BitmapData オブジェクトを作成します。getColorBoundsRect() メソッドを呼び出して、赤(0xFF0000)のピクセルからなる矩形を判別します。さらに、(findColor パラメータを false に設定して)同じメソッドを呼び出し、中のピクセルが赤でない矩形を判別します。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
var rect:Rectangle = new Rectangle(0, 0, 80, 20);
bmd.fillRect(rect, 0xFF0000);

var maskColor:uint = 0xFFFFFF; 
var color:uint = 0xFF0000;  
var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
trace(redBounds); // (x=0, y=0, w=80, h=20)

var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);
trace(notRedBounds); // (x=0, y=20, w=80, h=20)

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
getPixel()メソッド 
public function getPixel(x:int, y:int):uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData オブジェクトの特定ポイント (x, y) の RGB ピクセル値を表す整数を返します。getPixel() メソッドは、乗算されていないピクセル値を返します。アルファ情報は返しません。

BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。

パラメータ

x:int — ピクセルの x 座標です。
 
y:int — ピクセルの y 座標です。

戻り値
uint — RGB ピクセル値を表す数値。(x , y) 座標がイメージの境界外である場合は、0 を返します。

関連項目




次の例では、塗りが赤の BitmapData オブジェクトを作成し、次に getPixel() メソッドを使用して、左上隅のピクセルの色の値を決定しています。
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

var pixelValue:uint = bmd.getPixel(1, 1);
trace(pixelValue.toString(16)); // ff0000;
getPixel32()メソッド 
public function getPixel32(x:int, y:int):uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

アルファチャンネルデータと RGB データを含む ARGB カラー値を返します。このメソッドは getPixel() メソッドと似ていますが、getPixel() メソッドはアルファチャンネルデータがない RGB カラーを返します。

BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。

パラメータ

x:int — ピクセルの x 座標です。
 
y:int — ピクセルの y 座標です。

戻り値
uint — ARGB ピクセル値を表す数値です。(x, y) 座標がイメージの境界外である場合は、0 を返します。

関連項目




次の例では、色で塗られた BitmapData オブジェクトを作成し、次に getPixel32() メソッドを使用して左上隅のピクセルの色の値を決定し、さらに各カラー成分(アルファ、赤、緑、青)の 16 進数値を決定します。

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(1, 1);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc
getPixels()メソッド 
public function getPixels(rect:Rectangle):ByteArray

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ピクセルデータの矩形領域からバイト配列を生成します。各ピクセルごとに、符号なし整数 (32 ビットの乗算されないピクセル値) をバイト配列に書き込みます。

パラメータ

rect:Rectangle — 現在の BitmapData オブジェクト内の矩形領域です。

戻り値
ByteArray — 特定の矩形内のピクセルを表す ByteArray です。

例外
TypeError — rect が null です。

関連項目




次の例では、ランダムノイズピクセルで塗りつぶされた BitmapData オブジェクトを作成し、getPixels() メソッドを使用して、ByteArray オブジェクトを BitmapData オブジェクトのピクセル値で塗りつぶします。
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(80, 40, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);
getVector()メソッド 
public function getVector(rect:Rectangle):Vector.<uint>

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ピクセルデータの矩形領域からベクター配列を生成します。指定された矩形を表す、符号なし整数 (32 ビットの乗算されないピクセル値) の Vector オブジェクトを返します。

パラメータ

rect:Rectangle — 現在の BitmapData オブジェクト内の矩形領域です。

戻り値
Vector.<uint> — 指定された Rectangle を表す Vector です。

例外
TypeError — rect が null です。
histogram()メソッド 
public function histogram(hRect:Rectangle = null):Vector.<Vector>

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

BitmapData オブジェクトの 256 値のバイナリ数のヒストグラムを計算します。このメソッドは 4 つの Vector を含む Vector オブジェクトを返します。<Number> インスタンス(Number オブジェクトを含む 4 つの Vector オブジェクト)です。4 つの Vector インスタンスは、赤、緑、青およびアルファの順の各コンポーネントを表します。各 Vector インスタンスには、各コンポーネントの値のポピュレーションカウント(0 ~ 255)を表す 256 値が含まれています。

パラメータ

hRect:Rectangle (default = null) — BitmapData オブジェクトの使用領域です。

戻り値
Vector.<Vector>
hitTest()メソッド 
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

1 つのビットマップイメージと、ポイント、矩形、または他のビットマップイメージとの間でピクセルレベルのヒットを検出します。ヒットは、1 つの不透明なピクセルまたは 2 つの重なり合う不透明なピクセル上のポイントまたは矩形の重なりです。ヒットテストの際、どちらのオブジェクトの変換(伸縮、回転など)も考慮されません。

イメージが不透明である場合、このメソッドでは完全に不透明な矩形と見なされます。透過性を考慮するピクセルレベルのヒットテストを実施する場合は、両方のイメージとも透明である必要があります。2 つの透明なイメージをテストするとき、アルファしきい値パラメータは、アルファチャンネル値(0 ~ 255)がいくつであれば不透明とみなすかを制御します。

パラメータ

firstPoint:Point — 任意の座標空間における BitmapData イメージの左上隅の位置です。同じ座標空間を使って secondBitmapPoint パラメータが定義されます。
 
firstAlphaThreshold:uint — このヒットテストで不透明とみなされるアルファチャンネルの最小値です。
 
secondObject:Object — Rectangle、Point、Bitmap、または BitmapData オブジェクトです。
 
secondBitmapDataPoint:Point (default = null) — 2 番目の BitmapData オブジェクト内のピクセル位置を定義するポイントです。このパラメータは、secondObject の値が BitmapData オブジェクトである場合にのみ使用します。
 
secondAlphaThreshold:uint (default = 1) — 2 番目の BitmapData オブジェクト内で不透明であるとみなされるアルファチャンネルの最小値です。このパラメータは、secondObject の値が BitmapData オブジェクトで、両方の BitmapData オブジェクトが透明である場合にのみ使用します。

戻り値
Boolean — ヒットが発生する場合は true、そうでない場合は false です。

例外
ArgumentError secondObject パラメータが、Point、Rectangle、Bitmap、または BitmapData オブジェクトではありません。
 
TypeError — firstPoint が null です。



次の例では、矩形領域 (20, 20, 40, 40) でのみ不透明な BitmapData オブジェクトを作成した後、hitTest() メソッドを呼び出します(secondObject として Point オブジェクトを使用)。最初の呼び出しでは、Point オブジェクトが(不透明ではない)BitmapData オブジェクトの左上隅を定義し、2 番目の呼び出しでは、Point オブジェクトが(不透明な)BitmapData オブジェクトの中央を定義します。
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock()メソッド 
public function lock():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト (例えば Bitmap オブジェクト) が更新されないように、イメージをロックします。パフォーマンスを向上させるには、このメソッドを unlock() メソッドと共に、setPixel() メソッドまたは setPixel32() メソッドを何度も呼び出す前後に使用してください。

関連項目




次の例では、bitmapData プロパティ(Bitmap オブジェクトである picture のプロパティ)に基づいて BitmapData オブジェクトを作成します。次に、lock() メソッドを呼び出してから、BitmapData オブジェクトを変更する複雑なカスタム関数である complexTransformation() を呼び出します (picture オブジェクトおよび complexTransformation() 関数はこの例では定義されません)。complexTransformation() 関数が bitmapData プロパティ (picture オブジェクトのプロパティ) を更新する場合でも、コードが unlock() メソッドを bitmapData オブジェクトに対して呼び出すまで、変更は反映されません。
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
merge()メソッド 
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ソースイメージとターゲットイメージをチャンネルごとにブレンドします。チャンネルおよびピクセルごとに、ソースピクセルおよびターゲットピクセルのチャンネル値に基づいて新しい値が計算されます。たとえば、赤チャンネルでは、新しい値が次のように計算されます (ここで、redSrc はソースイメージのピクセルでの赤チャンネル値、redDest はターゲットイメージの対応するピクセルでの赤チャンネル値です) 。

new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;

redMultipliergreenMultiplierblueMultiplier、および alphaMultiplier の各値は、それぞれのカラーチャンネルに対して使用する乗数です。0 から 0x100(256)までの 16 進数値を使用します。0 を指定すると、ターゲットの値がそのまま結果で使用され、0x100 を指定すると、ソースの値がそのまま使用されます。その間の数値を指定すると、混ぜ合わされた色が使用されます(50% の場合、0x80 など)。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData オブジェクトを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ (現在の BitmapData インスタンス) 内のポイントです。
 
redMultiplier:uint — 赤チャンネル値に乗算する 16 進数の uint 値です。
 
greenMultiplier:uint — 緑チャンネル値に乗算する 16 進数の uint 値です。
 
blueMultiplier:uint — 青チャンネル値に乗算する 16 進数の uint 値です。
 
alphaMultiplier:uint — アルファ透明度の値に乗算する 16 進数の uint 値です。


例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。



次の例では、2 つの BitmapData オブジェクトを作成します。どちらのサイズも 100 x 80 ピクセルです。最初のオブジェクトは緑、2 番目のオブジェクトは赤でそれぞれ塗りつぶされます。コードは merge() メソッドを呼び出し、2 番目の BitmapData ピクセルを最初の BitmapData オブジェクトの指定された矩形領域にのみ結合します。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00);
var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000);
var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(20, 20);
var mult:uint = 0x80; // 50% 
bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
noise()メソッド 
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ランダムノイズを表すピクセルでイメージを塗りつぶします。

パラメータ

randomSeed:int — ランダムシード (乱数の種) として使用する数値です。他のすべてのパラメータを同じままにした場合、ランダムシードの値を変更することでさまざまな疑似乱数を生成できます。ノイズ関数はマッピング関数であり、真の乱数生成関数ではありません。このため、同じランダムシードから毎回同じ結果が作成されます。
 
low:uint (default = 0) — チャンネルごとに生成する最小値です (0 ~ 255) 。
 
high:uint (default = 255) — チャンネルごとに生成する最大値です (0 ~ 255) 。
 
channelOptions:uint (default = 7) — 任意の 4 つのカラーチャンネル値 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREEN、および BitmapDataChannel.ALPHA) の組み合わせである数値。OR 論理演算子 (|) を使用して、複数のチャンネル値を組み合わせることができます。
 
grayScale:Boolean (default = false) — ブール値です。値が true である場合、すべてのカラーチャンネルに同じ値を設定することでグレースケールのイメージが作成されます。このパラメータを true に設定しても、アルファチャンネル選択には影響しません。

関連項目




次の例では、2 つの BitmapData オブジェクトを作成し、両者に対して noise() メソッドを呼び出します。ただし、grayscale パラメータは false に設定されるか (1 番目のオブジェクトの noise() メソッドへの呼び出しの場合)、true に設定されます (2 番目のオブジェクトの noise() メソッドへの呼び出しの場合) 。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;

var bmd1:BitmapData = new BitmapData(80, 80);
var bmd2:BitmapData = new BitmapData(80, 80);

var seed:int = int(Math.random() * int.MAX_VALUE);
bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false);
bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 90;
paletteMap()メソッド 
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

最大で 4 つのカラーパレットデータ配列(各チャンネルごとに 1 つの配列)を使用して、イメージ内のカラーチャンネル値をマッピングし直します。

Flash Player または AIR は以下の手順に従って、結果として得られるイメージを生成します。

  1. 赤、緑、青、アルファの各値を算出した後、標準の 32 ビット整数算術演算を使ってこれらの値を足し合わせます。
  2. 各ピクセルの赤、緑、青、アルファのチャンネル値を抽出して、別個の 0 ~ 255 の値にします。これらの値は、次の該当する配列で新しいカラー値を調べる場合に使用します。redArraygreenArrayblueArray、および alphaArray。これら 4 つの配列にはそれぞれ 256 個の値が含まれている必要があります。
  3. 新しいチャンネル値を 4 つともすべて取得した後、それらの値を組み合わせて、ピクセルに適用される標準の ARGB 値にします。

このメソッドではクロスチャンネル効果をサポートできます。それぞれの入力配列は完全な 32 ビット値を含むことができます。値を足し合わせるときに移動は発生しません。このルーチンは、チャンネル単位のクランピングに対応していません。

チャンネルに対して配列が指定されない場合は、ソースイメージからターゲットイメージにカラーチャンネルがコピーされます。

このメソッドは各種効果で使用できます。例えば、通常のパレットマッピング (1 つのチャンネルを選択して疑似色イメージに変換する) などです。さらに、ガンマ、曲線、平準化、量子化といったさまざまなカラー操作アルゴリズムにもこのメソッドを使用できます。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ (現在の BitmapData オブジェクト) 内のポイントです。
 
redArray:Array (default = null)redArraynull でない場合、red = redArray[source red value] else red = source rect value
 
greenArray:Array (default = null)greenArraynull でない場合、green = greenArray[source green value] else green = source green value.
 
blueArray:Array (default = null)blueArraynull でない場合、blue = blueArray[source blue value] else blue = source blue value
 
alphaArray:Array (default = null)alphaArraynull でない場合、alpha = alphaArray[source alpha value] else alpha = source alpha value


例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。



次の例では、中央に赤い正方形がある緑の BitmapData オブジェクトを作成した後、paletteMap() メソッドを使用して、BitmapData オブジェクトの下半分の矩形内の赤と緑を入れ替えます。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);

var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);

for(var i:uint = 0; i < 255; i++) {
    redArray[i] = 0x00000000;
    greenArray[i] = 0x00000000;
}

redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;

var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);

var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);
perlinNoise()メソッド 
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void

ランタイムバージョン: AIR 1.0 Flash Player 9

Perlin ノイズイメージを生成します。

Perlin ノイズ生成アルゴリズムでは、個々のランダムノイズ関数 (オクターブといいます) を補間および組み合わせることで、より自然に見えるランダムノイズを生成する単一の関数にします。音楽のオクターブと同様、各オクターブ関数の周波数は、その前のオクターブ関数の周波数の 2 倍になります。Perlin ノイズは、複数のノイズデータセットをさまざまな詳細レベルで組み合わせるので、"フラクタルノイズの和" と呼ばれてきました。

Perlin ノイズ関数は、木目、雲、山脈など、自然現象や風景をシミュレートする場合に使用できます。ほとんどの場合、Perlin ノイズ関数の出力をそのまま表示するのではなく、他のイメージを強調したり、擬似ランダムバリエーションを与えるために使用します。

単純なデジタルランダムノイズ関数は、コントラストのきついポイントが含まれるイメージを生成する場合が多いです。このようにきついコントラストは自然界にはあまりありません。Perlin ノイズアルゴリズムは、さまざまな詳細レベルで実行する複数のノイズ関数を混ぜ合わせます。このアルゴリズムの結果、互いに隣接するピクセル値の差異はより小さくなります。

メモ : Perlin ノイズアルゴリズムは、1982 年の映画「トロン」のコンピュータグラフィックを生成した後に、そのアルゴリズムを開発した Ken Perlin 氏にちなんで命名されました。Perlin 氏は 1997 年に、Perlin ノイズ関数に関する技術的功績によりアカデミー賞を受賞しました。

パラメータ

baseX:Numberx 方向で使用する周波数。例えば、64 x 128 のイメージに見合うサイズのノイズを生成するには、baseX 値として 64 を渡します。
 
baseY:Numbery 方向で使用する周波数。例えば、64 x 128 のイメージに見合うサイズのノイズを生成するには、baseY 値として 128 を渡します。
 
numOctaves:uint — このノイズを作成するために組み合わせるオクターブ (つまり個々のノイズ関数) の数です。オクターブ数を多くすると、よりきめ細かいイメージを作成できます。オクターブ数を増やすと、処理時間も長くなります。
 
randomSeed:int — ランダムシード (乱数の種) として使用する数値です。他のすべてのパラメータを同じままにした場合、ランダムシードの値を変更することでさまざまな疑似乱数を生成できます。Perlin ノイズ関数はマッピング関数であり、真の乱数生成関数ではありません。このため、同じランダムシードから毎回同じ結果が作成されます。
 
stitch:Boolean — ブール値です。値が true の場合、ビットマップ塗りとしてシームレスなタイリング用テクスチャを作成するために、このメソッドはイメージのトランジションエッジをスムーズにすることを試みます。
 
fractalNoise:Boolean — ブール値です。値が true の場合、このメソッドはフラクタルノイズを生成します。それ以外の場合は、乱流を生成します。乱流があるイメージにはグラデーションに視覚的な不連続性があるので、炎や海の波のようなシャープな視覚効果に適している場合があります。
 
channelOptions:uint (default = 7) — 任意の 4 つのカラーチャンネル値 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREEN、および BitmapDataChannel.ALPHA) の組み合わせである数値。OR 論理演算子 (|) を使用して、複数のチャンネル値を組み合わせることができます。
 
grayScale:Boolean (default = false) — ブール値です。値が true の場合、赤、緑、および青の各カラーチャンネルに同じ値を設定して、グレースケールイメージが作成されます。この値が true に設定されても、アルファチャンネルの値に影響はありません。
 
offsets:Array (default = null) — 各オクターブの x オフセットと y オフセットに対応するポイントの配列です。オフセット値を操作することで、perlinNoise イメージのレイヤーをスムーズにスクロールできます。オフセット配列内の各ポイントは、特定のオクターブノイズ関数に影響を与えます。




次の例では、perlinNoise() メソッドを呼び出して赤および青の水彩画効果を生み出す 200 x 200 ピクセルの BitmapData オブジェクトを作成します。

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC);

var seed:Number = Math.floor(Math.random() * 10);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
pixelDissolve()メソッド 
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ソースイメージからターゲットイメージへのピクセルディゾルブ、または同じイメージを使用したピクセルディゾルブを実行します。Flash Player または AIR は randomSeed 値を使ってランダムなピクセルディゾルブを生成します。完了するまでピクセルディゾルブを続けるには、この関数の戻り値を後続の呼び出しに渡す必要があります。

ソースイメージとターゲットイメージが等しくない場合は、すべてのプロパティを使用して、ソースからターゲットにピクセルがコピーされます。この処理により、空白イメージから完全に設定されたイメージへのディゾルブが可能になります。

ソースイメージとターゲットイメージが等しい場合は、color パラメータを使ってピクセルが塗られます。この処理により、完全に設定されたイメージを消去するようにディゾルブできます。このモードでは、ターゲット point パラメータが無視されます。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ (現在の BitmapData インスタンス) 内のポイントです。
 
randomSeed:int (default = 0) — ピクセルディゾルブを開始するために使用するランダムシード (乱数の種) です。
 
numPixels:int (default = 0) — デフォルトは、ソース領域 (幅 x 高さ) の 1/30 です。
 
fillColor:uint (default = 0) — ソース値とターゲット値が等しいピクセルの塗りつぶしに使用する ARGB カラー値です。

戻り値
int — 後続の呼び出しで使用する新しいランダムシード (乱数の種) です。

例外
TypeError — sourceBitmapData、sourceRect、または destPoint が null です。
 
TypeError — numPixels が負の値です。



次の例では、pixelDissolve() メソッドを使用して、すべてのピクセルのカラーが変更されるまで一度に 40 個のピクセルをディゾルブすることにより、グレーの BitmapData オブジェクトを赤に変換します。
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);

var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
 
function timerHandler(event:TimerEvent):void {
    var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
    dissolve(randomNum);
}

function dissolve(randomNum:Number):void {
    var rect:Rectangle = bmd.rect;
    var pt:Point = new Point(0, 0);
    var numberOfPixels:uint = 100;
    var red:uint = 0x00FF0000;
    bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
    var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
    if(grayRegion.width == 0 && grayRegion.height == 0 ) {
        tim.stop();
    }
}
scroll()メソッド 
public function scroll(x:int, y:int):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

所定の (x , y) ピクセル量だけイメージをスクロールします。スクロール領域外のエッジ領域は変わらずにそのままになります。

パラメータ

x:int — 水平方向のスクロール量です。
 
y:int — 垂直方向のスクロール量です。




次の例は、Bitmap データオブジェクトを右に 40 ピクセルだけスクロールした効果を示しています。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);
            
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc

bmd.scroll(30, 0); 

trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000
setPixel()メソッド 
public function setPixel(x:int, y:int, color:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData オブジェクトの 1 つのピクセルを設定します。この処理中、イメージピクセルのアルファチャンネルは現在の値が保持されます。RGB カラーパラメータの値は、乗算されていないカラー値として扱われます。

メモ : setPixel() または setPixel32() メソッドを繰り返し使用する場合、パフォーマンスを向上させるには、lock() メソッドを呼び出してから setPixel() または setPixel32() メソッドを呼び出します。その後、ピクセル変更がすべて完了したら、unlock() メソッドを呼び出します。このように処理を行うと、ピクセル変更がすべて完了するまで、この BitmapData インスタンスを参照するオブジェクトは更新されません。

パラメータ

x:int — 値が変更されるピクセルの x 座標です。
 
y:int — 値が変更されるピクセルの y 座標です。
 
color:uint — 結果として生成される、ピクセルの RGB カラーです。

関連項目




次の例では、setPixel() メソッドを使用して、BitmapData オブジェクト内に赤い線を描画します。

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0xFF0000;
    bmd.setPixel(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixel32()メソッド 
public function setPixel32(x:int, y:int, color:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

BitmapData オブジェクトの 1 つのピクセルにカラー値とアルファ透明度を設定します。このメソッドは setPixel() メソッドと似ています。主な違いは、setPixel32() メソッドではアルファチャンネル情報が含まれる ARGB カラー値を引数として取ることです。

BitmapData オブジェクト内のピクセルはすべて、乗算済みカラー値として保存されます。乗算済みイメージピクセルは、アルファデータが既に乗算された赤、緑、青の各カラーチャンネル値を保持します。例えば、アルファ値が 0 の場合、乗算されていない値に関わらず、RGB チャンネルの値も 0 になります。このようにデータが失われると、処理の実行時に問題が生じることがあります。BitmapData のすべてのメソッドは、乗算されていない値を受け取ったり返したりします。ピクセルの内部表現は、値として返される前に、乗算済みから非乗算に変換されます。設定処理の際は、ピクセル値が事前に乗算されてから、生のイメージピクセルが設定されます。

メモ : setPixel() または setPixel32() メソッドを繰り返し使用する場合、パフォーマンスを向上させるには、lock() メソッドを呼び出してから setPixel() または setPixel32() メソッドを呼び出します。その後、ピクセル変更がすべて完了したら、unlock() メソッドを呼び出します。このように処理を行うと、ピクセル変更がすべて完了するまで、この BitmapData インスタンスを参照するオブジェクトは更新されません。

パラメータ

x:int — 値が変更されるピクセルの x 座標です。
 
y:int — 値が変更されるピクセルの y 座標です。
 
color:uint — 結果として生成される、ピクセルの ARGB カラーです。ビットマップが不透明な (透明でない) 場合には、このカラー値のアルファ透明度部分は無視されます。

関連項目




次の例では、setPixel32()メソッドを使用して、透明な (alpha == 0x60) 赤い線を BitmapData オブジェクト内に描画します。

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0x60FF0000;
    bmd.setPixel32(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
setPixels()メソッド 
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

バイト配列をピクセルデータの矩形領域に変換します。各ピクセルごとに ByteArray.readUnsignedInt() メソッドが呼び出され、戻り値がピクセルに書き込まれます。矩形全体が書き込まれる前にバイト配列が終了した場合、関数は終了します。バイト配列内のデータは 32 ビット ARGB ピクセル値と想定されます。ピクセル読み取りの前後に、バイト配列に対するシークは実行されません。

パラメータ

rect:Rectangle — BitmapData オブジェクトの矩形領域を指定します。
 
inputByteArray:ByteArray — 矩形領域で使用される 32 ビットの乗算されないピクセル値からなる ByteArray オブジェクトです。


例外
EOFError inputByteArray オブジェクトには、rect 矩形の領域を塗りつぶすための十分なデータが含まれていません。このメソッドは、可能な限り多くのピクセルを塗りつぶした後、例外をスローします。
 
TypeError — rect または inputByteArray が null です。

関連項目




次の例では、getPixels() メソッドと setPixels() メソッドを使用して、ある BitmapData オブジェクトから別の BitmapData オブジェクトにピクセルをコピーします。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC);
var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000);

var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bmd1.getPixels(rect);

bytes.position = 0;
bmd2.setPixels(rect, bytes);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;
setVector()メソッド 
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void

パラメータ

rect:Rectangle
 
inputVector:Vector.<uint>

threshold()メソッド 
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定されたしきい値と比較してイメージ内のピクセル値をテストし、テストに適合したピクセルに新しいカラー値を設定します。threshold() メソッドを使用すると、イメージ内のカラー範囲を分離して置換し、イメージピクセルに対しその他の論理演算を実行することができます。

threshold() メソッドのテスト論理は次のとおりです。

  1. ((pixelValue & mask) operation (threshold & mask)) の場合、ピクセルを color に設定します。
  2. そうでない場合、copySource == true であれば、sourceBitmap の対応するピクセル値にピクセルを設定

operation パラメータは、しきい値テストで使用する比較演算子を指定します。たとえば、operation パラメータとして "==" を使用することにより、イメージ内の特定のカラー値を分離できます。または、{operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000} を使用することにより、ソースイメージピクセルのアルファが 0x7F 未満の場合に、すべてのターゲットピクセルが完全に透明になるよう設定できます。アニメーション化されたトランジションやその他の効果に対して、この技法を使用できます。

パラメータ

sourceBitmapData:BitmapData — 使用する入力ビットマップイメージです。ソースイメージは、別の BitmapData オブジェクトにすることも、現在の BitmapData インスタンスを参照することもできます。
 
sourceRect:Rectangle — 入力として使用するソースイメージの領域を定義する矩形です。
 
destPoint:Point — ソース矩形の左上隅に対応する、ターゲットイメージ (現在の BitmapData インスタンス) 内のポイントです。
 
operation:String — 比較演算子 ("<"、"<="、">"、">="、"=="、"!=") の 1 つ。ストリングとして渡されます。="
 
threshold:uint — 各ピクセルがしきい値に適合するか、それともしきい値を超えているかをテストするための基準となる値です。
 
color:uint (default = 0) — しきい値テストに適合した場合にピクセルに設定されるカラー値です。デフォルト値は 0x00000000 です。
 
mask:uint (default = 0xFFFFFFFF) — カラーコンポーネントを分離するために使用するマスクです。
 
copySource:Boolean (default = false) — 値が true の場合、しきい値テストが失敗したときに、ソースイメージのピクセル値がターゲットイメージにコピーされます。値が false であれば、しきい値テストに適合しない場合にソースイメージはコピーされません。

戻り値
uint — 変更されたピクセルの数です。

例外
TypeError — sourceBitmapData、sourceRect、destPoint、または operation が null です。
 
ArgumentError — operation のストリングが有効な演算ではありません。



次の例では、perlinNoise() メソッドを使用して青および赤のパターンを 1 つの BitmapData オブジェクトに追加した後、threshold() メソッドを使用して、これらのピクセルを最初の BitmapData オブジェクトから 2 番目のオブジェクトにコピーします。その際、赤の値が 0x80 (50%) より大きいピクセルを、透明の赤 (0x20FF0000) に設定されたピクセルに置換します。

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);

var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);

var bitmap1:Bitmap = new Bitmap(bmd1);
addChild(bitmap1);

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00800000; 
var color:uint = 0x20FF0000;
var maskColor:uint = 0x00FF0000;
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

var bitmap2:Bitmap = new Bitmap(bmd2);
bitmap2.x = bitmap1.x + bitmap1.width + 10;
addChild(bitmap2);
unlock()メソッド 
public function unlock(changeRect:Rectangle = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

この BitmapData オブジェクトが変更されたときに、BitmapData オブジェクトを参照するすべてのオブジェクト(例えば Bitmap オブジェクト)が更新されるように、イメージをロック解除します。パフォーマンスを向上させるには、このメソッドを lock() メソッドと共に、setPixel() メソッドまたは setPixel32() メソッドを何度も呼び出す前後に使用してください。

パラメータ

changeRect:Rectangle (default = null) — 変更された BitmapData オブジェクトの領域です。このパラメータに値を指定しない場合、BitmapData オブジェクトの全領域が変更されたと見なされます。このパラメータは、Flash Player バージョン 9.0.115.0 以降を必要とします。

関連項目




次の例では、bitmapData プロパティ(Bitmap オブジェクトである picture のプロパティ)に基づいて BitmapData オブジェクトを作成します。次に、lock() メソッドを呼び出してから、BitmapData オブジェクトを変更する複雑なカスタム関数である complexTransformation() を呼び出します (picture オブジェクトおよび complexTransformation() 関数はこの例では定義されません)。complexTransformation() 関数が bitmapData プロパティ (picture オブジェクトのプロパティ) を更新する場合でも、コードが unlock() メソッドを bitmapData オブジェクトに対して呼び出すまで、変更は反映されません。
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
例の使用法
BitmapDataExample.as

次の例では、BitmapDataExample クラスを使用して、"Image.gif" イメージをデフォルトの位置 (0, 0) にある DisplayObject にロードします。"Image.gif" のコピーを下のイメージの右に配置します。このコピーでは、threshold() メソッドを使用するテストに合格したピクセルに新しい色が適用されています。これを行うには、以下の手順を実行します。
  1. url プロパティを作成します。これはイメージファイルの場所と名前です。
  2. クラスコンストラクタが Loader オブジェクトを作成します。これは、completeHandler() メソッドがイメージ操作を完了したときに送出される、イベントリスナーをインスタンス化します。
  3. 次に、request URLRequest オブジェクトが、loader.load() に渡されます。これは、表示オブジェクトを使用してメモリにイメージをロードします。
  4. 次にイメージが表示リストに配置され、イメージは画面の座標 x = 0、y = 0 に表示されます。
  5. 続いて、completeHandler() メソッドで次の処理が実行されます。
    • 2 番目の Loader オブジェクトと Bitmap オブジェクトを作成します。Bitmap オブジェクトは、この Loader オブジェクトで初期化されます。
    • 2 番目の Bitmap オブジェクトである duplicate を作成します。これは、duplicateImage() メソッドを呼び出し、元のイメージを複製します。
    • BitmapData オブジェクトを作成すると、これが duplicate オブジェクトの BitmapData オブジェクトに割り当てられます。
    • 元のイメージと同じ座標、幅、高さで初期化された新しい Rectangle オブジェクトを作成します。
    • 新しい Point オブジェクトを作成します。デフォルトでは x = 0、y = 0 に作成されます。
    • 次に示す変数を作成します。
      • operation — しきい値が元の値以上である場合に、新しい色を適用します。
      • threshold — 各ピクセルの比較対象の値。この例では、アルファ 0xCC の明るい灰色に設定されます。
      • color — しきい値のテストに合格したピクセルに設定する色。この例では黄色です。
      • mask — 正反対の色。この例では透明色の青色です。
      • copySourcefalse に設定します。これは、しきい値を満たさなかった場合には、ピクセル値がコピーされないことを示します。しきい値のテストに合格したピクセルだけが変更されるため、この値に意味はありません。
    • 上記の変数を使用して threshold() メソッドを呼び出します。結果のしきい値の等式は、if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00 のようになります。

メモ :


package {
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;

    public class BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            configureAssets();
        }

        private function configureAssets():void {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

            var request:URLRequest = new URLRequest(url);
            loader.x = size * numChildren;
            loader.load(request);
            addChild(loader);
        }

        private function duplicateImage(original:Bitmap):Bitmap {
            var image:Bitmap = new Bitmap(original.bitmapData.clone());
            image.x = size * numChildren;
            addChild(image);
            return image;
        }

        private function completeHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);

            var duplicate:Bitmap = duplicateImage(image);
            var bitmapData:BitmapData = duplicate.bitmapData;
            var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
            var destPoint:Point = new Point();
            var operation:String = ">=";
            var threshold:uint = 0xCCCCCCCC;
            var color:uint = 0xFFFFFF00;
            var mask:uint = 0x000000FF;
            var copySource:Boolean = true;

            bitmapData.threshold(bitmapData,
                                 sourceRect,
                                 destPoint,
                                 operation,
                                 threshold,
                                 color,
                                 mask,
                                 copySource);
        }
        
        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("Unable to load image: " + url);
        }
    }
}
BitmapDataExample2.as

次の例では、Loader クラスを使用して PNG ファイルをロードし、アプリケーションのシステムアイコンのイメージを使用します。

メモ:この例をテストするには、次の操作を実行します。

  1. プロジェクトディレクトリに AIRAliases.js ファイルを追加します。
  2. AIRApp_128.png という名前の 128x128 ピクセル PNG イメージファイルをプロジェクトディレクトリのアイコンサブディレクトリに追加します。
  3. このプロジェクトのアプリケーション記述ファイルを作成し、ADL を使用してプロジェクトをテストします。



<html>
    <head>
      <script src="AIRAliases.js" />
      <script>
        function init() {
            var loader = new air.Loader(); // new runtime.flash.display.Loader();
            loader.contentLoaderInfo.addEventListener(air.Event.COMPLETE, imgLoaded)
            
            var request = new air.URLRequest("icons/AIRApp_128.png");
            loader.load(request);
        }

        
        function imgLoaded(event)
        {
            var image = air.Bitmap(loader.content);
            air.NativeApplication.nativeApplication.icon.bitmaps = [image.bitmapData];
        }
    </script>
    </head>
    <body onload='init()'>
    </body>
</html>




 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/display/BitmapData.html