所有类


java.awt.image
类 ComponentSampleModel

java.lang.Object
  继承者 java.awt.image.SampleModel
      继承者 java.awt.image.ComponentSampleModel
直接已知子类:
BandedSampleModel, PixelInterleavedSampleModel

public class ComponentSampleModel
   
   
   
   
   
extends SampleModel

此类表示按每个像素样本占用 DataBuffer 中一个数据元素的方式存储的图像数据。它可存储 N 个样本,这 N 个样本可通过 N 个独立的数据数组元素组成像素。不同的 band 可能位于 DataBuffer 的不同库中。由于提供了 Accessor 方法,因此可以直接对图像数据进行操作。此类可以支持不同类型的交错,如 band 交错、scanline 交错和像素交错等。像素跨度 (pixel stride) 是同一 scanline 上同一 band 的两个样本之间的数据数组元素数。Scanline 跨度是给定样本与下一 scanline 的同一列中对应样本之间的数据数组元素数。Band 偏移量表示从保持每个 band 的 DataBuffer 库的第一个数据数组元素到 band 的第一个样本之间的数据数组元素数。band 从 0 到 N-1 编号。此类可以表示这样的图像数据:每个样本都可以按 8、16 或 32 位存储无符号整数的数据(分别使用 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT)、每个样本都可以按 16 位存储有符号整数的数据(使用 DataBuffer.TYPE_SHORT),或者每个样本都是有符号 float 和 double 量的数据(分别使用 DataBuffer.TYPE_FLOATDataBuffer.TYPE_DOUBLE)。所有给定的 ComponentSampleModel 样本都是以同样的精度存储的。所有跨度和偏移量必须为非负数。此类支持 TYPE_BYTETYPE_USHORTTYPE_SHORTTYPE_INTTYPE_FLOATTYPE_DOUBLE

另请参见:
PixelInterleavedSampleModel, BandedSampleModel

字段摘要
protected  int[] bandOffsets
          数据数组元素中所有 band 的偏移量。
protected  int[] bankIndices
          存储图像数据 band 的各库的索引。
protected  int numBands
          此 ComponentSampleModel 中的 band 数量。
protected  int numBanks
          此 ComponentSampleModel 中的库数量。
protected  int pixelStride
          由此 ComponentSampleModel 所描述的图像数据区域的像素跨度(以数据数组元素为单位)。
protected  int scanlineStride
          由此 ComponentSampleModel 所描述的图像数据区域的行跨度(以数据数组元素为单位)。
 
从类 java.awt.image.SampleModel 继承的字段
dataType, height, width
 
构造方法摘要
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bandOffsets)
          构造具有指定参数的 ComponentSampleModel。
ComponentSampleModel(int dataType, int w, int h, int pixelStride, int scanlineStride, int[] bankIndices, int[] bandOffsets)
          构造具有指定参数的 ComponentSampleModel。
 
方法摘要
 SampleModel createCompatibleSampleModel(int w, int h)
          创建具有指定宽度和高度的 ComponentSampleModel
 DataBuffer createDataBuffer()
          创建对应于此 ComponentSampleModelDataBuffer
 SampleModel createSubsetSampleModel(int[] bands)
          创建具有此 ComponentSampleModel 的 band 子集的新 ComponentSampleModel。
 boolean equals(Object o)
          指示某个其他对象是否与此对象“相等”。
 int[] getBandOffsets()
          返回所有 band 的 band 偏移量。
 int[] getBankIndices()
          返回所有 band 的库索引。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          以 TransferType 类型的基本数组形式返回单个像素的数据。
 int getNumDataElements()
          返回使用 getDataElements(int, int, Object, DataBuffer)setDataElements(int, int, Object, DataBuffer) 方法传输像素所需的数据元素的数量。
 int getOffset(int x, int y)
          获取像素 (x,y) 的第一个 band 的偏移量。
 int getOffset(int x, int y, int b)
          获取像素 (x,y) 的 band b 的偏移量。
 int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
          返回 int 数组中指定像素的所有样本(每个数组元素一个样本)。
 int[] getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          返回 int 数组中像素的指定矩形区域的所有样本(每个数组元素一个样本)。
 int getPixelStride()
          返回此 ComponentSampleModel 的像素跨度。
 int getSample(int x, int y, int b, DataBuffer data)
          以 int 类型返回位于 (x,y) 处像素的指定 band 中的样本。
 double getSampleDouble(int x, int y, int b, DataBuffer data)
          针对 (x,y) 处的像素,返回指定 band 中样本的 double 值。
 float getSampleFloat(int x, int y, int b, DataBuffer data)
          以 float 类型返回位于 (x,y) 处像素的指定 band 中的样本。
 int[] getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          针对一个 int 数组中指定的像素矩形,返回指定 band 中的样本,每个数据数组元素对应一个样本。
 int[] getSampleSize()
          返回所有 band 的每样本的位数。
 int getSampleSize(int band)
          返回指定 band 的每样本位数。
 int getScanlineStride()
          返回此 ComponentSampleModel 的 scanline 跨度。
 int hashCode()
          返回该对象的哈希码值。
 void setDataElements(int x, int y, Object obj, DataBuffer data)
          从 TransferType 类型的基本数组设置指定 DataBuffer 中单个像素的数据。
 void setPixel(int x, int y, int[] iArray, DataBuffer data)
          使用输入样本的 int 数组设置 DataBuffer 中的像素。
 void setPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          从包含每个数组元素一个样本的 int 数组设置像素矩形区域的所有样本。
 void setSample(int x, int y, int b, double s, DataBuffer data)
          使用输入的 double 值,为 DataBuffer 中 (x,y) 处像素设置指定 band 中的样本。
 void setSample(int x, int y, int b, float s, DataBuffer data)
          使用输入的 float 值,为 DataBuffer 中 (x,y) 处像素设置指定 band 中的样本。
 void setSample(int x, int y, int b, int s, DataBuffer data)
          使用输入的 int 值,为 DataBuffer 中 (x,y) 处的像素设置指定 band 中的样本。
 void setSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          根据为每个数据数组元素包含一个样本的 int 数组,设置指定像素矩形的指定 band 中的样本。
 
从类 java.awt.image.SampleModel 继承的方法
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSamples, setSamples
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

bandOffsets

protected int[] bandOffsets
数据数组元素中所有 band 的偏移量。


bankIndices

protected int[] bankIndices
存储图像数据 band 的各库的索引。


numBands

protected int numBands
ComponentSampleModel 中的 band 数量。


numBanks

protected int numBanks
ComponentSampleModel 中的库数量。


scanlineStride

protected int scanlineStride
由此 ComponentSampleModel 所描述的图像数据区域的行跨度(以数据数组元素为单位)。


pixelStride

protected int pixelStride
由此 ComponentSampleModel 所描述的图像数据区域的像素跨度(以数据数组元素为单位)。

构造方法详细信息

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bandOffsets)
构造具有指定参数的 ComponentSampleModel。band 数量将由 bandOffsets 数组的长度给定。所有 band 都将存储在 DataBuffer 的第一个库中。

参数:
dataType - 存储样本的数据类型
w - 描述的图像数据区域的宽度(以像素为单位)
h - 描述的图像数据区域的高度(以像素为单位)
pixelStride - 描述的图像数据区域的像素跨度
scanlineStride - 描述的图像数据区域的行跨度
bandOffsets - 所有 band 的偏移量
抛出:
IllegalArgumentException - 如果 wh 不大于 0
IllegalArgumentException - 如果 pixelStride 小于 0
IllegalArgumentException - 如果 scanlineStride 小于 0
IllegalArgumentException - 如果 numBands 小于 1
IllegalArgumentException - 如果 wh 的乘积大于 Integer.MAX_VALUE
IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一

ComponentSampleModel

public ComponentSampleModel(int dataType,
                            int w,
                            int h,
                            int pixelStride,
                            int scanlineStride,
                            int[] bankIndices,
                            int[] bandOffsets)
构造具有指定参数的 ComponentSampleModel。band 数量将由 bandOffsets 数组的长度给定。不同的 band 可能存储在 DataBuffer 的不同库中。

参数:
dataType - 存储样本的数据类型
w - 描述的图像数据区域的宽度(以像素为单位)
h - 描述的图像数据区域的高度(以像素为单位)
pixelStride - 描述的图像数据区域的像素跨度
scanlineStride - 描述的图像数据区域的行跨度
bankIndices - 所有 band 的库索引
bandOffsets - 所有 band 的 band 偏移量
抛出:
IllegalArgumentException - 如果 wh 不大于 0
IllegalArgumentException - 如果 pixelStride 小于 0
IllegalArgumentException - 如果 scanlineStride 小于 0
IllegalArgumentException - 如果 bankIndices 的长度不等于 bankOffsets 的长度
IllegalArgumentException - 如果 bandIndices 的 band 索引中任何一项小于 0
IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一
方法详细信息

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
创建具有指定宽度和高度的 ComponentSampleModel。新的 SampleModel 将有与此 SampleModel 相同的 band 数量、存储数据类型、交错方案和像素跨度。

指定者:
SampleModel 中的 createCompatibleSampleModel
参数:
w - 得到的 SampleModel 的宽度
h - 得到的 SampleModel 的高度
返回:
具有指定大小的 ComponentSampleModel
抛出:
IllegalArgumentException - 如果 wh 不大于 0

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部