所有类


java.awt.image
类 SinglePixelPackedSampleModel

java.lang.Object
  继承者 java.awt.image.SampleModel
      继承者 java.awt.image.SinglePixelPackedSampleModel

public class SinglePixelPackedSampleModel
   
   
   
   
   
extends SampleModel

此类表示压缩的像素数据:将 N 个样本组成的单个像素存储在单个数据数组元素中,每个数据数组元素只保存一个像素的样本。此类支持 TYPE_BYTETYPE_USHORTTYPE_INT 数据类型。所有数据数组元素都位于 DataBuffer 的第一个存储单元中。该类提供了一些存取器方法,以便直接操作图像数据。扫描行跨距是给定样本和下一个扫描行同一列中对应样本之间的数据数组元素的数量。位掩码是提取表示像素 band 的样本所需的掩码。位偏移量是表示像素 band 的样本的数据数组元素中位的偏移量。

以下代码阐释了如何从 DataBuffer data 中提取表示像素 x,y 的 band b 的样本位:

      int sample = data.getElem(y * scanlineStride + x);
      sample = (sample & bitMasks[b]) >>> bitOffsets[b];
 


字段摘要
 
从类 java.awt.image.SampleModel 继承的字段
dataType, height, numBands, width
 
构造方法摘要
SinglePixelPackedSampleModel(int dataType, int w, int h, int[] bitMasks)
          构造一个具有 bitMasks.length band 的 SinglePixelPackedSampleModel。
SinglePixelPackedSampleModel(int dataType, int w, int h, int scanlineStride, int[] bitMasks)
          构造一个 SinglePixelPackedSampleModel,它具有 bitMasks.length band,并且扫描行跨距等于 scanlineStride 数据数组元素。
 
方法摘要
 SampleModel createCompatibleSampleModel(int w, int h)
          创建一个具有指定宽度和高度的新 SinglePixelPackedSampleModel。
 DataBuffer createDataBuffer()
          创建一个对应于此 SinglePixelPackedSampleModel 的 DataBuffer。
 SampleModel createSubsetSampleModel(int[] bands)
          创建一个新 SinglePixelPackedSampleModel,它具有此 SinglePixelPackedSampleModel 的 band 子集。
 boolean equals(Object o)
          指示某个其他对象是否与此对象“相等”。
 int[] getBitMasks()
          返回所有 band 的位掩码。
 int[] getBitOffsets()
          返回表示所有 band 的一个像素的数据数组元素中的位偏移量。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          返回 TransferType 类型的基本数组中单个像素的数据。
 int getNumDataElements()
          返回通过 getDataElements 和 setDataElements 方法传输一个像素所需的数据元素数。
 int getOffset(int x, int y)
          返回像素 (x,y)(在数据数组元素中)的偏移量。
 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 getSample(int x, int y, int b, DataBuffer data)
          以 int 形式返回 (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()
          返回此 SinglePixelPackedSampleModel 的扫描行跨距。
 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, 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, getSampleDouble, getSampleFloat, getSamples, getSamples, getTransferType, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setSample, setSample, setSamples, setSamples
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int[] bitMasks)
构造一个具有 bitMasks.length band 的 SinglePixelPackedSampleModel。每个样本都存储在数据数组元素中其对应位掩码的位置处。每个位掩码必须是邻接的且掩码不能重叠。

参数:
dataType - 存储样本使用的数据类型。
w - 所描述的图像数据区域的(像素)宽度。
h - 所描述的图像数据区域的(像素)高度。
bitMasks - 所有 band 的位掩码。
抛出:
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT

SinglePixelPackedSampleModel

public SinglePixelPackedSampleModel(int dataType,
                                    int w,
                                    int h,
                                    int scanlineStride,
                                    int[] bitMasks)
构造一个 SinglePixelPackedSampleModel,它具有 bitMasks.length band,并且扫描行跨距等于 scanlineStride 数据数组元素。每个样本都存储在数据数组元素中其对应位掩码的位置处。每个位掩码必须是邻接的且掩码不能重叠。

参数:
dataType - 存储样本使用的数据类型。
w - 所描述的图像数据区域的(像素)宽度。
h - 所描述的图像数据区域的(像素)高度。
scanlineStride - 图像数据的行跨距。
bitMasks - 所有 band 的位掩码。
抛出:
IllegalArgumentException - 如果 wh 不大于 0
IllegalArgumentException - 如果 bitMask 中的任何掩码不相邻
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
方法详细信息

getNumDataElements

public int getNumDataElements()
返回通过 getDataElements 和 setDataElements 方法传输一个像素所需的数据元素数。对于 SinglePixelPackedSampleModel,此元素数为 1。

指定者:
SampleModel 中的 getNumDataElements
返回:
数据元素的数量。
另请参见:
SampleModel.getDataElements(int, int, Object, DataBuffer), SampleModel.getDataElements(int, int, int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, Object, DataBuffer), SampleModel.setDataElements(int, int, int, int, Object, DataBuffer), SampleModel.getTransferType()

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
创建一个具有指定宽度和高度的新 SinglePixelPackedSampleModel。新 SinglePixelPackedSampleModel 的存储数据类型和位掩码与此 SinglePixelPackedSampleModel 相同。

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

createDataBuffer

public DataBuffer createDataBuffer()
创建一个对应于此 SinglePixelPackedSampleModel 的 DataBuffer。DataBuffer 的数据类型和大小将与此 SinglePixelPackedSampleModel 一致。DataBuffer 只有一个存储单元。

指定者:
SampleModel 中的 createDataBuffer
返回:
对应于此 SampleModelDataBuffer

getSampleSize

public int[] getSampleSize()
返回所有 band 的每个样本的位数。

指定者:
SampleModel 中的 getSampleSize
返回:
所有 band 样本的大小。

getSampleSize

public int getSampleSize(int band)
返回指定 band 的每个样本的位数。

指定者:
SampleModel 中的 getSampleSize
参数:
band - 指定的 band
返回:
指定 band 样本的大小。

getOffset

public int getOffset(int x,
                     int y)
返回像素 (x,y)(在数据数组元素中)的偏移量。包含像素 x,y 的数据元素可以使用 SinglePixelPackedSampleModel sppsm 从 DataBuffer data 中检索:
        data.getElem(sppsm.getOffset(x, y));
 

参数:
x, y - 指定像素的坐标
返回:
指定像素的偏移量。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部