- java.lang.Object
-
- java.awt.image.Raster
-
- java.awt.image.WritableRaster
-
public class WritableRasterextends Raster
此类扩展Raster以提供像素写入功能。 有关Raster如何存储像素的说明,请参阅Raster的类注释。这个类的构造函数受到保护。 要实例化WritableRaster,请使用Raster类中的createWritableRaster工厂方法之一。
-
-
字段汇总
-
声明的属性在类 java.awt.image.Raster
dataBuffer, height, minX, minY, numBands, numDataElements, parent, sampleModel, sampleModelTranslateX, sampleModelTranslateY, width
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
使用给定的SampleModel和DataBuffer构造WritableRaster。protected
WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, WritableRaster parent)
使用给定的SampleModel,DataBuffer和parent构造WritableRaster。protected
WritableRaster(SampleModel sampleModel, Point origin)
使用给定的SampleModel构造WritableRaster。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 WritableRaster
createWritableChild(int parentX, int parentY, int w, int h, int childMinX, int childMinY, int[] bandList)
返回一个新的WritableRaster,它共享全部或部分WritableRaster的DataBuffer。WritableRaster
createWritableTranslatedChild(int childMinX, int childMinY)
创建一个与此相同大小的WritableRaster,SampleModel和DataBuffer,但具有不同的位置。WritableRaster
getWritableParent()
返回此WritableRaster的父WritableRaster(如果有),否则返回null。void
setDataElements(int x, int y, int w, int h, Object inData)
从TransferType类型的基本数组中设置像素矩形的数据。void
setDataElements(int x, int y, Raster inRaster)
设置输入Raster中像素矩形的数据。void
setDataElements(int x, int y, Object inData)
为TransferType类型的基本数组设置单个像素的数据。void
setPixel(int x, int y, double[] dArray)
使用双数组样本设置DataBuffer中的像素以进行输入。void
setPixel(int x, int y, float[] fArray)
使用样本的float数组为输入设置DataBuffer中的像素。void
setPixel(int x, int y, int[] iArray)
使用int数组样本设置DataBuffer中的像素以进行输入。void
setPixels(int x, int y, int w, int h, double[] dArray)
为每个数组元素包含一个样本的双数组设置像素矩形的所有样本。void
setPixels(int x, int y, int w, int h, float[] fArray)
为包含每个数组元素一个样本的float数组设置像素矩形的所有样本。void
setPixels(int x, int y, int w, int h, int[] iArray)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。void
setRect(int dx, int dy, Raster srcRaster)
将像素从Raster srcRaster复制到此WritableRaster。void
setRect(Raster srcRaster)
将像素从Raster srcRaster复制到此WritableRaster。void
setSample(int x, int y, int b, double s)
使用double作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSample(int x, int y, int b, float s)
使用float作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSample(int x, int y, int b, int s)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。void
setSamples(int x, int y, int w, int h, int b, double[] dArray)
从包含每个数组元素一个样本的double数组中为指定的像素矩形设置指定band中的样本。void
setSamples(int x, int y, int w, int h, int b, float[] fArray)
从包含每个数组元素一个样本的float数组中为指定的像素矩形设置指定band中的样本。void
setSamples(int x, int y, int w, int h, int b, int[] iArray)
从包含每个数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。-
声明方法的类 java.awt.image.Raster
createBandedRaster, createBandedRaster, createBandedRaster, createChild, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createCompatibleWritableRaster, createInterleavedRaster, createInterleavedRaster, createInterleavedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createPackedRaster, createRaster, createTranslatedChild, createWritableRaster, createWritableRaster, getBounds, getDataBuffer, getDataElements, getDataElements, getHeight, getMinX, getMinY, getNumBands, getNumDataElements, getParent, getPixel, getPixel, getPixel, getPixels, getPixels, getPixels, getSample, getSampleDouble, getSampleFloat, getSampleModel, getSampleModelTranslateX, getSampleModelTranslateY, getSamples, getSamples, getSamples, getTransferType, getWidth
-
-
-
-
构造方法详细信息
-
WritableRaster
protected WritableRaster(SampleModel sampleModel, Point origin)
使用给定的SampleModel构造WritableRaster。 WritableRaster的左上角是原点,它与SampleModel的大小相同。 将自动创建足以描述WritableRaster的DataBuffer。- 参数
-
sampleModel
- 指定布局的SampleModel。 -
origin
- 指定原点的Point。 - 异常
-
RasterFormatException
- 如果计算origin.x + sampleModel.getWidth()
或origin.y + sampleModel.getHeight()
导致整数溢出
-
WritableRaster
protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Point origin)
使用给定的SampleModel和DataBuffer构造WritableRaster。 WritableRaster的左上角是原点,它与SampleModel的大小相同。 DataBuffer未初始化,必须与SampleModel兼容。- 参数
-
sampleModel
- 指定布局的SampleModel。 -
dataBuffer
- 包含图像数据的DataBuffer。 -
origin
- 指定原点的Point。 - 异常
-
RasterFormatException
- 如果计算origin.x + sampleModel.getWidth()
或origin.y + sampleModel.getHeight()
导致整数溢出
-
WritableRaster
protected WritableRaster(SampleModel sampleModel, DataBuffer dataBuffer, Rectangle aRegion, Point sampleModelTranslate, WritableRaster parent)
使用给定的SampleModel,DataBuffer和parent构造WritableRaster。 aRegion指定新Raster的边界矩形。 当转换为基本Raster的坐标系时,基本Raster必须包含aRegion。 (基本Raster是Raster的祖先,没有父级。)sampleModelTranslate指定新Raster的sampleModelTranslateX和sampleModelTranslateY值。 请注意,此构造函数通常应由其他构造函数或create方法调用,不应直接使用。- 参数
-
sampleModel
- 指定布局的SampleModel。 -
dataBuffer
- 包含图像数据的DataBuffer。 -
aRegion
- 指定图像区域的矩形。 -
sampleModelTranslate
- 指定从SampleModel到Raster坐标的转换的Point。 -
parent
- 此栅格的父级(如果有)。 - 异常
-
RasterFormatException
- 如果aRegion
宽度或高度小于或等于零,或计算aRegion.x + aRegion.width
或aRegion.y + aRegion.height
导致整数溢出
-
-
方法详细信息
-
getWritableParent
public WritableRaster getWritableParent()
返回此WritableRaster的父WritableRaster(如果有),否则返回null。- 结果
-
WritableRaster
的父WritableRaster
,或null
。
-
createWritableTranslatedChild
public WritableRaster createWritableTranslatedChild(int childMinX, int childMinY)
创建一个与此相同大小的WritableRaster,SampleModel和DataBuffer,但具有不同的位置。 新的WritableRaster将拥有对当前WritableRaster的引用,可通过其getParent()和getWritableParent()方法访问。- 参数
-
childMinX
- 新Raster左上角的X坐标。 -
childMinY
- 新Raster左上角的Y坐标。 - 结果
- 除指定位置外,与此相同的
WritableRaster
。 - 异常
-
RasterFormatException
- 如果计算childMinX + this.getWidth()
或childMinY + this.getHeight()
导致整数溢出
-
createWritableChild
public WritableRaster createWritableChild(int parentX, int parentY, int w, int h, int childMinX, int childMinY, int[] bandList)
返回一个新的WritableRaster,它共享全部或部分WritableRaster的DataBuffer。 新的WritableRaster将拥有对当前WritableRaster的引用,可通过其getParent()和getWritableParent()方法访问。parentX,parentY,width和height参数在此WritableRaster的坐标空间中形成一个Rectangle,指示要共享的像素区域。 如果此Rectangle未包含在当前WritableRaster的边界中,则会引发错误。
新的WritableRaster可以另外转换为平面的不同坐标系,而不是当前WritableRaster使用的坐标系。 childMinX和childMinY参数给出返回的WritableRaster的左上角像素的新(x,y)坐标; 新WritableRaster中的坐标(childMinX,childMinY)将映射到与当前WritableRaster中的坐标(parentX,parentY)相同的像素。
新的WritableRaster可以被定义为仅包含当前WritableRaster的一个子带,可能通过bandList参数重新排序。 如果bandList为null,则将其包含在当前顺序中的当前WritableRaster的所有band。
要创建一个包含当前WritableRaster的子区域,但是共享其坐标系统和带一个新的WritableRaster,这种方法应该childMinX(等于parentX),childMinY等于parentY)和bandList(被称为等于空。
- 参数
-
parentX
- 此WritableRaster坐标中左上角的X坐标。 -
parentY
- 此WritableRaster坐标中左上角的Y坐标。 -
w
- 以(parentX,parentY)开头的区域宽度。 -
h
- 以(parentX,parentY)开头的区域的高度。 -
childMinX
- 返回的WritableRaster左上角的X坐标。 -
childMinY
- 返回的WritableRaster左上角的Y坐标。 -
bandList
- 波段索引数组,或null以使用所有波段。 - 结果
- 一个
WritableRaster
分享的全部或部分DataBuffer
如此WritableRaster
。 - 异常
-
RasterFormatException
- 如果子区域位于栅格边界之外。 -
RasterFormatException
-如果w
或h
小于或等于0,或者计算任何的parentX + w
,parentY + h
,childMinX + w
,或childMinY + h
导致整数溢出
-
setDataElements
public void setDataElements(int x, int y, Object inData)
为TransferType类型的基本数组设置单个像素的数据。 对于Java 2D(tm)API支持的图像数据,这将是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。 阵列中的数据可以是打包格式,因此提高了数据传输的效率。 如果坐标不在边界内,或者inData不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。 如果输入对象不为null并且引用除TransferType数组之外的任何内容,则抛出ClassCastException。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
inData
- 对getTransferType()定义的类型数组的对象引用,以及包含要放置在x,y的像素数据的长度为getNumDataElements()的对象引用。 - 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者inData太小而无法容纳输入。 - 另请参见:
-
SampleModel.setDataElements(int, int, Object, DataBuffer)
-
setDataElements
public void setDataElements(int x, int y, Raster inRaster)
设置输入Raster中像素矩形的数据。 输入Raster必须与此WritableRaster兼容,因为它们必须具有相同数量的band,相应的band必须具有相同的每个样本位数,TransferTypes和NumDataElements必须相同,以及getDataElements / setDataElements使用的打包必须是相同的。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
inRaster
- 包含放置在x,y的数据的栅格。 - 异常
-
NullPointerException
- 如果inRaster为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内。
-
setDataElements
public void setDataElements(int x, int y, int w, int h, Object inData)
从TransferType类型的基本数组中设置像素矩形的数据。 对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。 阵列中的数据可以是打包格式,因此提高了数据传输的效率。 如果坐标不在边界内,或者inData不足以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。 如果输入对象不为null并且引用除TransferType数组之外的任何内容,则抛出ClassCastException。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
inData
- 由getTransferType()定义的类型数组的对象引用,长度为w * h * getNumDataElements(),包含放置在x,y和x + w-1,y + h-1之间的像素数据。 - 异常
-
NullPointerException
- 如果inData为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者inData太小而无法容纳输入。 - 另请参见:
-
SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
-
setRect
public void setRect(Raster srcRaster)
将像素从Raster srcRaster复制到此WritableRaster。 除非地址超出此栅格的范围,否则srcRaster中的每个像素都将复制到此栅格中的相同x,y地址。 srcRaster必须与此WritableRaster具有相同数量的波段。 副本是源样本到相应目标样本的简单副本。如果源和目标Rasters的所有样本都是整数类型且大小小于或等于32位,则调用此方法相当于对两个Rasters中有效的所有
x,y
地址执行以下代码。Raster srcRaster; WritableRaster dstRaster; for (int b = 0; b < srcRaster.getNumBands(); b++) { dstRaster.setSample(x, y, b, srcRaster.getSample(x, y, b)); }
将float或double源复制到整数类型目标时,每个源样本都会强制转换为目标类型。 将整数类型的源复制到float或double目标时,首先使用上面的整数类型规则将源转换为32位int(如果需要),然后将int转换为float或double。
- 参数
-
srcRaster
- 用于复制像素的光栅。 - 异常
-
NullPointerException
- 如果srcRaster为null。
-
setRect
public void setRect(int dx, int dy, Raster srcRaster)
将像素从Raster srcRaster复制到此WritableRaster。 对于srcRaster中的每个(x,y)地址,相应的像素将被复制到此WritableRaster中的地址(x + dx,y + dy),除非(x + dx,y + dy)超出此栅格的范围。 srcRaster必须与此WritableRaster具有相同数量的波段。 副本是源样本到相应目标样本的简单副本。 有关详细信息,请参阅setRect(Raster)
。- 参数
-
dx
- 从src空间到副本的dst空间的X转换因子。 -
dy
- 从src空间到副本的dst空间的Y转换因子。 -
srcRaster
- 用于复制像素的光栅。 - 异常
-
NullPointerException
- 如果srcRaster为null。
-
setPixel
public void setPixel(int x, int y, int[] iArray)
使用int数组样本设置DataBuffer中的像素以进行输入。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
iArray
- int数组中的输入样本。 - 异常
-
NullPointerException
- 如果iArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者iArray太小而无法保持输入。
-
setPixel
public void setPixel(int x, int y, float[] fArray)
使用样本的float数组为输入设置DataBuffer中的像素。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
fArray
- float数组中的输入样本。 - 异常
-
NullPointerException
- 如果fArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者fArray太小而无法容纳输入。
-
setPixel
public void setPixel(int x, int y, double[] dArray)
使用双数组样本设置DataBuffer中的像素以进行输入。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
dArray
- 双数组中的输入样本。 - 异常
-
NullPointerException
- 如果NullPointerException
为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者ArrayIndexOutOfBoundsException
太小而无法保持输入。
-
setPixels
public void setPixels(int x, int y, int w, int h, int[] iArray)
为每个数组元素包含一个样本的int数组设置像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
iArray
- 输入int像素数组。 - 异常
-
NullPointerException
- 如果iArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者iArray太小而无法容纳输入。
-
setPixels
public void setPixels(int x, int y, int w, int h, float[] fArray)
为包含每个数组元素一个样本的float数组设置像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
fArray
- 输入浮点像素数组。 - 异常
-
NullPointerException
- 如果fArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者fArray太小而无法容纳输入。
-
setPixels
public void setPixels(int x, int y, int w, int h, double[] dArray)
为每个数组元素包含一个样本的双数组设置像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
dArray
- 输入双像素阵列。 - 异常
-
NullPointerException
- 如果NullPointerException
为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标不在边界内,或者ArrayIndexOutOfBoundsException
太小而无法容纳输入。
-
setSample
public void setSample(int x, int y, int b, int s)
使用int作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
b
- 要设置的乐队。 -
s
- 输入样本。 - 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内。
-
setSample
public void setSample(int x, int y, int b, float s)
使用float作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
b
- 要设置的乐队。 -
s
- 输入样本为浮点数。 - 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内。
-
setSample
public void setSample(int x, int y, int b, double s)
使用double作为输入,为DataBuffer中位于(x,y)的像素设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 像素位置的X坐标。 -
y
- 像素位置的Y坐标。 -
b
- 要设置的乐队。 -
s
- 输入样本为double。 - 异常
-
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内。
-
setSamples
public void setSamples(int x, int y, int w, int h, int b, int[] iArray)
从包含每个数组元素一个样本的int数组中为指定的像素矩形设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 要设置的乐队。 -
iArray
- 输入int样本数组。 - 异常
-
NullPointerException
- 如果iArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内,或者iArray太小而无法保持输入。
-
setSamples
public void setSamples(int x, int y, int w, int h, int b, float[] fArray)
从包含每个数组元素一个样本的float数组中为指定的像素矩形设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 要设置的乐队。 -
fArray
- 输入float样本数组。 - 异常
-
NullPointerException
- 如果fArray为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内,或者fArray太小而无法保持输入。
-
setSamples
public void setSamples(int x, int y, int w, int h, int b, double[] dArray)
从包含每个数组元素一个样本的double数组中为指定的像素矩形设置指定band中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,不保证显式边界检查。- 参数
-
x
- 左上角像素位置的X坐标。 -
y
- 左上角像素位置的Y坐标。 -
w
- 像素矩形的宽度。 -
h
- 像素矩形的高度。 -
b
- 要设置的乐队。 -
dArray
- 输入双样本数组。 - 异常
-
NullPointerException
- 如果NullPointerException
为null。 -
ArrayIndexOutOfBoundsException
- 如果坐标或波段索引不在边界内,或者dArray太小而无法保持输入。
-
-