所有类


java.awt.image
类 SampleModel

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

public abstract class SampleModel
   
   
   
   
   
extends Object

此抽象类定义了一个提取图像像素样本的接口。所有图像数据都被表示成一个像素集合。每个像素都由许多样本组成。样本是一个图像 band 的基本数据,band 由图像中某一特定类型的所有样本组成。例如,一个像素可能包含三个样本,分别表示红、绿、蓝的分量。在包含此相素的图像中有三个 band。其中一个 band 由图像中所有像素的红色样本组成。第二个 band 由所有绿色样本组成,第三个 band 由所有蓝色样本组成。像素可以以各种格式存储。例如,特定 band 中的所有样本可以连续存储,或者单个像素的所有样本可以连续存储。

SampleModel 的子类指定它们能够表示的样本类型(例如,无符号 8 位字节、有符号 16 位 short 型等),并且可以指定如何在存储器中组织样本。在 Java 2D(tm) API 中,内置的图像处理运算符可能无法处理所有可能的样本类型,但通常可以处理 16 位或 16 位以下的无符号整数样本。某些运算符支持更大范围的样本类型。

像素的集合被表示为一个 Raster,它由 DataBuffer 和 SampleModel 组成。SampleModel 允许访问 DataBuffer 中的样本,并提供程序员可以用来直接操作 DataBuffer 中样本和像素的低级别信息。

此类通常是处理图像的一个回调方法。更为有效的代码将 SampleModel 强行转换为适当的子类,并提取直接操作 DataBuffer 中的像素所需的信息。

另请参见:
DataBuffer, Raster, ComponentSampleModel, PixelInterleavedSampleModel, BandedSampleModel, MultiPixelPackedSampleModel, SinglePixelPackedSampleModel

字段摘要
protected  intdataType
          存储像素数据的 DataBuffer 的数据类型。
protected  intheight
          此 SampleModel 描述的图像数据区域的像素高度。
protected  intnumBands
          此 SampleModel 描述的图像数据的 band 数。
protected  intwidth
          此 SampleModel 描述的图像数据区域的像素宽度。
 
构造方法摘要
SampleModel(int dataType, int w, int h, int numBands)
          构造一个具有指定参数的 SampleModel。
 
方法摘要
abstract  SampleModelcreateCompatibleSampleModel(int w, int h)
          创建一个用此 SampleModel 的格式描述数据但宽度和高度不同的 SampleModel。
abstract  DataBuffercreateDataBuffer()
          创建一个对应于此 SampleModel 的 DataBuffer。
abstract  SampleModelcreateSubsetSampleModel(int[] bands)
          创建一个新 SampleModel,它具有此 SampleModel 的 band 子集。
 ObjectgetDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
          返回 TransferType 类型基本数组中指定像素矩形的像素数据。
abstract  ObjectgetDataElements(int x, int y, Object obj, DataBuffer data)
          返回 TransferType 类型的基本数组中单个像素的数据。
 intgetDataType()
          返回存储像素数据的 DataBuffer 的数据类型。
 intgetHeight()
          返回像素高度。
 intgetNumBands()
          返回图像数据的总 band 数。
abstract  intgetNumDataElements()
          返回通过 getDataElements 和 setDataElements 方法传输一个像素所需的数据元素数。
 double[]getPixel(int x, int y, double[] dArray, DataBuffer data)
          在一个 double 数组中返回指定像素的样本。
 float[]getPixel(int x, int y, float[] fArray, DataBuffer data)
          在一个 float 数组中返回指定像素的样本。
 int[]getPixel(int x, int y, int[] iArray, DataBuffer data)
          在一个 int 数组中返回指定像素的样本,每个数组元素一个样本。
 double[]getPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
          在一个 double 数组中返回像素矩形的所有样本,每个数组元素一个样本。
 float[]getPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
          在一个 float 数组中返回像素矩形的所有样本,每个数组元素一个样本。
 int[]getPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          在一个 int 数组中返回像素矩形的所有样本,每个数组元素一个样本。
abstract  intgetSample(int x, int y, int b, DataBuffer data)
          以 int 形式返回 (x,y) 处像素的指定 band 中的样本。
 doublegetSampleDouble(int x, int y, int b, DataBuffer data)
          以 double 形式返回 (x,y) 处像素的指定 band 中的样本。
 floatgetSampleFloat(int x, int y, int b, DataBuffer data)
          以 float 形式返回 (x,y) 处像素的指定 band 中的样本。
 double[]getSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
          在一个 double 数组中返回指定像素矩形的指定 band 的样本,每个数组元素一个样本。
 float[]getSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
          在一个 float 数组中返回指定像素矩形的指定 band 的样本,每个数组元素一个样本。
 int[]getSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          在一个 int 数组中返回指定像素矩形的指定 band 的样本,每个数组元素一个样本。
abstract  int[]getSampleSize()
          返回所有 band 样本(以位为单位)的大小。
abstract  intgetSampleSize(int band)
          返回指定 band 样本(以位为单位)的大小。
 intgetTransferType()
          返回通过 getDataElements 和 setDataElements 方法传输像素所使用的 TransferType。
 intgetWidth()
          返回像素宽度。
 voidsetDataElements(int x, int y, int w, int h, Object obj, DataBuffer data)
          根据 TransferType 类型的基本数组设置指定 DataBuffer 中像素矩形的数据。
abstract  voidsetDataElements(int x, int y, Object obj, DataBuffer data)
          根据 TransferType 类型的基本数组设置指定 DataBuffer 中单个像素的数据。
 voidsetPixel(int x, int y, double[] dArray, DataBuffer data)
          使用输入样本的 double 数组设置 DataBuffer 中的像素。
 voidsetPixel(int x, int y, float[] fArray, DataBuffer data)
          使用输入样本的 float 数组设置 DataBuffer 中的像素。
 voidsetPixel(int x, int y, int[] iArray, DataBuffer data)
          使用输入样本的 int 数组设置 DataBuffer 中的像素。
 voidsetPixels(int x, int y, int w, int h, double[] dArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 double 数组设置像素矩形的所有样本。
 voidsetPixels(int x, int y, int w, int h, float[] fArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 float 数组设置像素矩形的所有样本。
 voidsetPixels(int x, int y, int w, int h, int[] iArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 int 数组设置像素矩形的所有样本。
 voidsetSample(int x, int y, int b, double s, DataBuffer data)
          使用输入的 double 设置 DataBuffer 中 (x,y) 处像素的指定 band 中的样本。
 voidsetSample(int x, int y, int b, float s, DataBuffer data)
          使用输入的 float 设置 DataBuffer 中 (x,y) 处像素的指定 band 中的样本。
abstract  voidsetSample(int x, int y, int b, int s, DataBuffer data)
          使用输入的 int 设置 DataBuffer 中 (x,y) 处像素的指定 band 中的样本。
 voidsetSamples(int x, int y, int w, int h, int b, double[] dArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 double 数组设置指定像素矩形的指定 band 中的样本。
 voidsetSamples(int x, int y, int w, int h, int b, float[] fArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 float 数组设置指定像素矩形的指定 band 中的样本。
 voidsetSamples(int x, int y, int w, int h, int b, int[] iArray, DataBuffer data)
          根据为每个数组元素包含一个样本的 int 数组设置指定像素矩形的指定 band 中的样本。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

width

protected int width
此 SampleModel 描述的图像数据区域的像素宽度。


height

protected int height
此 SampleModel 描述的图像数据区域的像素高度。


numBands

protected int numBands
此 SampleModel 描述的图像数据的 band 数。


dataType

protected int dataType
存储像素数据的 DataBuffer 的数据类型。

另请参见:
DataBuffer
构造方法详细信息

SampleModel

public SampleModel(int dataType,
                   int w,
                   int h,
                   int numBands)
构造一个具有指定参数的 SampleModel。

参数:
dataType - 存储像素数据的 DataBuffer 的数据类型。
w - 图像数据区域的(像素)宽度。
h - 图像数据区域的(像素)高度。
numBands - 图像数据的 band 数。
抛出:
IllegalArgumentException - 如果 wh 不大于 0
IllegalArgumentException - 如果 wh 所产生的结果大于 Integer.MAX_VALUE
IllegalArgumentException - 如果 dataType 不是受支持的数据类型之一
方法详细信息

getWidth

public final int getWidth()
返回像素宽度。

返回:
SampleModel 描述的图像数据区域的像素宽度。

getHeight

public final int getHeight()
返回像素高度。

返回:
SampleModel 描述的图像数据区域的像素高度。

getNumBands

public final int getNumBands()
返回图像数据的总 band 数。

返回:
SampleModel 描述的图像数据的 band 数。

getNumDataElements

public abstract int getNumDataElements()
返回通过 getDataElements 和 setDataElements 方法传输一个像素所需的数据元素数。当通过这些方法传输像素时,可以以压缩或非压缩格式传输它们,这取决于 SampleModel 的实现。使用这些方法,像素就可以以具有 getTransferType() 给出的基本类型的 getNumDataElements() 元素数组的格式进行传输。TransferType 可以与 DataType 的存储数据类型相同,也可以不同。

返回:
数据元素的数量。
另请参见:
getDataElements(int, int, Object, DataBuffer), getDataElements(int, int, int, int, Object, DataBuffer), setDataElements(int, int, Object, DataBuffer), setDataElements(int, int, int, int, Object, DataBuffer), getTransferType()