所有类


java.awt.image
类 MultiPixelPackedSampleModel

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

public class MultiPixelPackedSampleModel
   
   
   
   
   
extends SampleModel

MultiPixelPackedSampleModel 类表示一个 band 的图像,并且能够将多个单采样像素打包到一个数据元素中。不允许像素跨越数据元素。数据类型可以是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT。每个像素的位数必须是 2 的某次幂,并且一个数据元素中放入的像素数必须正好也是 2 的某次幂。像素位的跨度等于每个像素的位数。扫描行的跨度在数据元素中,最后几个数据元素可以由未使用的像素填充。数据位的偏移量是从 DataBuffer 的开始到首个像素的位偏移量,并且必须是像素位跨度的倍数。

下面的代码说明了如何从 DataBuffer data 中提取像素 x, y 的各位并将像素数据存储到 dataType 类型的数据元素中:

      int dataElementSize = DataBuffer.getDataTypeSize(dataType);
      int bitnum = dataBitOffset + x*pixelBitStride;
      int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);
      int shift = dataElementSize - (bitnum & (dataElementSize-1))
                  - pixelBitStride;
      int pixel = (element >> shift) & ((1 << pixelBitStride) - 1);
 


字段摘要
 
从类 java.awt.image.SampleModel 继承的字段
dataType, height, numBands, width
 
构造方法摘要
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits)
          构造一个具有指定数据类型、宽度、高度和每个像素位数的 MultiPixelPackedSampleModel
MultiPixelPackedSampleModel(int dataType, int w, int h, int numberOfBits, int scanlineStride, int dataBitOffset)
          构造一个具有指定数据类型、宽度、高度、每个像素的位数、扫描行跨度和数据位偏移量的 MultiPixelPackedSampleModel
 
方法摘要
 SampleModel createCompatibleSampleModel(int w, int h)
          构造一个具有指定宽度和高度的新 MultiPixelPackedSampleModel
 DataBuffer createDataBuffer()
          创建一个与此 MultiPixelPackedSampleModel 对应的 DataBuffer
 SampleModel createSubsetSampleModel(int[] bands)
          创建一个具有此 MultiPixelPackedSampleModel 的 band 子集的新 MultiPixelPackedSampleModel
 boolean equals(Object o)
          指示某个其他对象是否与此对象“相等”。
 int getBitOffset(int x)
          返回数据元素中存储扫描行第 x 个像素的偏移量(以位为单位)。
 int getDataBitOffset()
          返回数据位的偏移量(以位为单位)。
 Object getDataElements(int x, int y, Object obj, DataBuffer data)
          以 TransferType 类型的基本数组形式返回单个像素的数据。
 int getNumDataElements()
          返回通过 getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 方法传输一个像素所需的数据元素数。
 int getOffset(int x, int y)
          返回数据数组元素中像素 (x, y) 的偏移量。
 int[] getPixel(int x, int y, int[] iArray, DataBuffer data)
          返回 int 数组首个元素中的指定单个 band 像素。
 int getPixelBitStride()
          返回像素位跨度,以位为单位。
 int getSample(int x, int y, int b, DataBuffer data)
          返回以 int 表示的、像素 (x, y) 指定 band 中的采样。
 int[] getSampleSize()
          返回所有 band 每个采样的位数。
 int getSampleSize(int band)
          返回指定 band 每个采样的位数。
 int getScanlineStride()
          返回扫描行的跨度。
 int getTransferType()
          返回通过 getDataElementssetDataElements 方法传输像素所使用的 TransferType。
 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 setSample(int x, int y, int b, int s, DataBuffer data)
          使用输入的 int,设置 DataBuffer 中位于 (x,y) 的像素的指定 band 中的采样。
 
从类 java.awt.image.SampleModel 继承的方法
getDataElements, getDataType, getHeight, getNumBands, getPixel, getPixel, getPixels, getPixels, getPixels, getSampleDouble, getSampleFloat, getSamples, getSamples, getSamples, getWidth, setDataElements, setPixel, setPixel, setPixels, setPixels, setPixels, setSample, setSample, setSamples, setSamples, setSamples
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType,
                                   int w,
                                   int h,
                                   int numberOfBits)
构造一个具有指定数据类型、宽度、高度和每个像素位数的 MultiPixelPackedSampleModel

参数:
dataType - 存储采样的数据类型
w - 所描述的图像数据区域的宽度,以像素为单位
h - 所描述的图像数据区域的高度,以像素为单位
numberOfBits - 每个像素的位数
抛出:
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 之一

MultiPixelPackedSampleModel

public MultiPixelPackedSampleModel(int dataType,
                                   int w,
                                   int h,
                                   int numberOfBits,
                                   int scanlineStride,
                                   int dataBitOffset)
构造一个具有指定数据类型、宽度、高度、每个像素的位数、扫描行跨度和数据位偏移量的 MultiPixelPackedSampleModel

参数:
dataType - 存储采用的数据类型
w - 所描述的图像数据区域的宽度,以像素为单位
h - 所描述的图像数据区域的高度,以像素为单位
numberOfBits - 每个像素的位数
scanlineStride - 图像数据的行跨度
dataBitOffset - 所描述的图像数据区域的数据位偏移量
抛出:
RasterFormatException - 如果每个像素的位数不是 2 的某次幂,或者一个数据元素中放入的像素数不是 2 的某次幂。
IllegalArgumentException - 如果 wh 不大于 0
IllegalArgumentException - 如果 dataType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT 之一
方法详细信息

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
构造一个具有指定宽度和高度的新 MultiPixelPackedSampleModel。这个新的 MultiPixelPackedSampleModel 具有和此 MultiPixelPackedSampleModel 相同的存储数据类型和每像素位数。

指定者:
SampleModel 中的 createCompatibleSampleModel
参数:
w - 指定的宽度
h - 指定的高度
返回:
具有指定宽度和高度,并且具有与此 MultiPixelPackedSampleModel 相同的存储数据类型和每像素位数的 SampleModel
抛出:
IllegalArgumentException - 如果 wh 不大于 0

createDataBuffer

public DataBuffer createDataBuffer()
创建一个与此 MultiPixelPackedSampleModel 对应的 DataBuffer。该 DataBuffer 对象的数据类型和大小与此 MultiPixelPackedSampleModel 一致。DataBuffer 具有单个存储单元。

指定者:
SampleModel 中的 createDataBuffer
返回:
具有与此 MultiPixelPackedSampleModel 相同的数据类型和大小的 DataBuffer

getNumDataElements

public int getNumDataElements()
返回通过 getDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer) 方法传输一个像素所需的数据元素数。对于 MultiPixelPackedSampleModel,该值是一。

指定者:
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()

getSampleSize

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

指定者:
SampleModel 中的 getSampleSize
返回:
每个采样的位数。

getSampleSize

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

指定者:
SampleModel 中的 getSampleSize
参数:
band - 指定的 band
返回:
指定 band 每个采样的位数。

getOffset

public int getOffset(int x,
                     int y)
返回数据数组元素中像素 (x, y) 的偏移量。

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

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部