Image.GetPixelArray

説明

要求された各ピクセル、またはイメージの各ピクセルに対する RGBA 値を含む 2D 配列を戻します。

警告:大きなイメージのピクセル配列全体を取得する場合、RAM が不足するとエラーになる可能性があります。大きなイメージを扱う場合は、一度に 1 行または 1 列ずつ読み取ることをお勧めします。

スクリプト 構文

oArray = Image.GetPixelArray( [PositionArray] );

戻り値

各ピクセルに対する正規化 RGBA 値を含む 2D SAFEARRAY(Arrayを参照)。最初の次元には各ピクセルの RGBA 値が含まれ、2 番目の次元にはイメージの左下から行ごとに並んだピクセルが含まれます。

パラメータ

パラメータ タイプ 詳細
PositionArray SAFEARRAY(Arrayを参照) 希望の各ピクセルの座標をリストした1D 配列または 2D 配列

1. VBScript の例

'
' This example illustrates how to retrieve the PixelArray using a 
' 2-dimensional pixel position array.
'
' This is an example of a huge JPG image that would be too large 
' to read with a single call to GetPixelArray. Instead we will 
' request only a subset of pixel values.
'
CreateImageClip "$SI_HOME\Data\XSI_SAMPLES\Pictures\jio.jpg"
SelectObj "Clips.jio_jpg"
set oImageClip = Selection(0)
set oImage = oImageClip.GetImage()
' Request the values of 4 pixels of the first column of the image, 
' starting at the bottom pixel and moving upwards
dim aPixelWanted(1,3)
aPixelWanted(0,0) = 0 : aPixelWanted(1,0) = 0
aPixelWanted(0,1) = 0 : aPixelWanted(1,1) = 1
aPixelWanted(0,2) = 0 : aPixelWanted(1,2) = 2
aPixelWanted(0,3) = 0 : aPixelWanted(1,3) = 3
rgba = oImage.GetPixelArray( aPixelWanted )
for i=LBound(rgba,2) to UBound(rgba,2)
        LogMessage "Pixel i :" & i
        LogMessage "R :" & rgba(0,i)
        LogMessage "G :" & rgba(1,i)
        LogMessage "B :" & rgba(2,i)
        LogMessage "A :" & rgba(3,i)
next

2. JScript の例

/*
        This example illustrates how to retrieve the PixelArray using a 
        1-dimensional pixel position array.
*/
CreateImageClip("$SI_HOME\\Data\\XSI_SAMPLES\\Pictures\\jio.jpg", null, null);
SelectObj("Clips.jio_jpg", null, null);
var oImageClip = Selection(0);
var oImage = oImageClip.GetImage()
// Request the values of 4 pixels of the first column of the image, 
// starting at the bottom pixel and moving upwards
var aPixelWanted = new Array();
aPixelWanted[0] = 0;  aPixelWanted[1] = 0;
aPixelWanted[2] = 0;  aPixelWanted[3] = 1;
aPixelWanted[4] = 0;  aPixelWanted[5] = 2;
aPixelWanted[6] = 0;  aPixelWanted[7] = 3;
var aRGBA = new VBArray(oImage.GetPixelArray( aPixelWanted ));
for (i = 0; i <= aRGBA.ubound(2); i++) 
{       LogMessage("Pixel i :"  + i);
        LogMessage("R :" + aRGBA.getItem(0,i));
        LogMessage("G :" + aRGBA.getItem(1,i));
        LogMessage("B :" + aRGBA.getItem(2,i));
        LogMessage("A :" + aRGBA.getItem(3,i));
}