找到一个例子:
raster.setPixel( pf, jj, clr );
但 clr 有4个元素:
static int[] clr = {0, 0, 0, 255};
为什么呢?第4个元素是什么意思?没有它就无法工作,抛出ArrayIndexOutOfBoundsException。
答案 0 :(得分:2)
您的WritableRaster
是使用SampleModel
创建的,每个像素需要四个样本。
在不了解您的应用程序的情况下(使用?创建的栅格的确切body {
padding: 4em 40%;
text-align: center;
}
select {
$bg-color: lightcyan;
$text-color: black;
appearance: none; // using -prefix-free http://leaverou.github.io/prefixfree/
background: {
color: $bg-color;
image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/1255/caret--down-15.png");
position: right;
repeat: no-repeat;
}
border: {
color: mix($bg-color, black, 80%);
radius: .2em;
style: solid;
width: 1px;
right-color: mix($bg-color, black, 60%);
bottom-color: mix($bg-color, black, 60%);
}
color: $text-color;
padding: .33em .5em;
width: 100%;
}
// Removes default arrow for IE10+
// IE 8/9 get dafault arrow which covers caret image
// as long as caret image is small than and positioned
// behind default arrow
select::-ms-expand {
display: none;
}
),很难确定第四个组件的含义。它很可能是alpha通道,它包含像素的不透明度,其中0 =透明,255 =完全不透明。
答案 1 :(得分:1)
根据您的评论,您确认raster
类型为WritableRaster
。
首先,为您的例外
没有它就无法工作,抛出ArrayIndexOutOfBoundsException。
从文档中,如果坐标不在边界内,或者给定的数组太小而无法容纳输入,则会抛出AIOOBE。
现在代表数组中给出的4个输入,
输入数组为栅格的每个波段定义样本。如果你打电话给例如WritableRaster#getNumBands
,它应该返回4。
但是whare是bands
?
这里是3个样本数组代表的直观表示:
现在第四个乐队,我很确定它是alpha样本。好吧,至少其中一个是alpha,但我们无法确认哪一个是你可以在创建光栅时修改波段的顺序。
答案 2 :(得分:0)
第四个参数是透明度值。
public void setPixel(int x,int y,int [] iArray)
使用用于输入的int数组样本在DataBuffer中设置像素。如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。但是,不保证显式边界检查。
参数:
x - 像素位置的X坐标。
y - 像素位置的Y坐标。
iArray - int数组中的输入样本。
抛出: NullPointerException - 如果iArray为null。
ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者iArray太小而无法容纳输入。
通常在处理像素时,您将拥有X和Y值,然后是R,G,B的3个参数或R,G,B, A 的4个参数,其中 是alpha通道,也称为不透明度。它将采用0到255之间的值,就像RGB值一样。