Module  java.desktop
软件包  java.awt.image

Class Raster

  • 已知直接子类:
    WritableRaster


    public class Raster
    extends Object
    表示矩形像素阵列的类。 光栅封装存储示例值的DataBuffer和一个描述如何在DataBuffer中定位给定样本值的SampleModel。

    光栅定义占据平面的特定矩形区域的像素的值,不一定包括(0,0)。 被称为光栅的边界矩形并通过getBounds方法可用的矩形由minX,minY,width和height值定义。 minX和minY值定义栅格左上角的坐标。 对边界矩形外的像素的引用可能导致抛出异常,或者可能导致引用栅格相关联的DataBuffer的非预期元素。 用户有责任避免访问这些像素。

    SampleModel描述了栅格的样本如何存储在DataBuffer的基元数组元素中。 样本可以像PixelInterleavedSampleModel或BandedSampleModel中的每个数据元素一样存储,或者将多个数据包装到一个元素中,如在SinglePixelPackedSampleModel或MultiPixelPackedSampleModel中。 SampleModel还控制样本是否进行符号扩展,允许将未签名的数据存储在已签名的Java数据类型(如byte,short和int)中。

    虽然光栅可能存在于飞机上的任何位置,但是SampleModel使用从(0,0)开始的简单坐标系。 因此,栅格包含一个翻译因子,允许在栅格坐标系和SampleModel坐标系之间映射像素位置。 通过getSampleModelTranslateX和getSampleModelTranslateY方法可以从SampleModel坐标系转换为栅格的坐标系。

    栅格可以通过显式构造或通过使用createChild和createTranslatedChild方法与另一个栅格共享DataBuffer。 通过这些方法创建的栅格可以通过getParent方法返回对其创建的栅格的引用。 对于没有通过调用createTranslatedChild或createChild构造的栅格,getParent将返回null。

    createTranslatedChild方法返回一个新的Raster,它共享当前栅格的所有数据,但占用一个相同宽度和高度但具有不同起始点的边界矩形。 例如,如果父栅格占据了区域(10,10)到(100,100),并且被翻译的栅格被定义为在(50,50)处开始,则父像素(像素(20,20) 60,60)在两个Raster共享的DataBuffer中占据相同的位置。 在第一种情况下,应将(-10,-10)添加到像素坐标中以获得相应的SampleModel坐标,并且在第二种情况下(-50,-50)应该被添加。

    父子节点之间的转换光栅可以通过从父节点的子像素中减去子样本的SampleModelTranslateX和sampleModelTranslateY值来确定。

    createChild方法可以用于创建一个新的栅格,它只占据其父层的边界矩形(具有相同或翻译的坐标系)的子集,或者与其父层的子集。

    所有构造函数都受到保护。 创建光栅的正确方法是使用此类中定义的静态创建方法之一。 这些方法创建使用标准交错,带状和打包样品模型的栅格实例,并且可以比通过组合外部生成的SampleModel和DataBuffer创建的栅格更有效地处理栅格。

    另请参见:
    DataBufferSampleModelPixelInterleavedSampleModelBandedSampleModelSinglePixelPackedSampleModelMultiPixelPackedSampleModel
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected DataBuffer dataBuffer
      DataBuffer存储图像数据。
      protected int height
      这个光栅的高度。
      protected int minX
      此栅格左上角像素的X坐标。
      protected int minY
      此光栅左上角像素的Y坐标。
      protected int numBands
      光栅中的乐队数。
      protected int numDataElements
      每像素DataBuffer数据元素的数量。
      protected Raster parent
      此栅格的父项,或null。
      protected SampleModel sampleModel
      SampleModel描述了这个栅格的像素如何存储在DataBuffer中。
      protected int sampleModelTranslateX
      从Raster的SampleModel的坐标空间到光栅的X平移。
      protected int sampleModelTranslateY
      从Raster的SampleModel的坐标空间到栅格的坐标空间的Y翻译。
      protected int width
      这个光栅的宽度。
    • 方法摘要

      所有方法  静态方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      static WritableRaster createBandedRaster​(int dataType, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
      基于具有指定数据类型,宽度,高度,扫描线步长,银行索引和带偏移的BandedSampleModel创建光栅。
      static WritableRaster createBandedRaster​(int dataType, int w, int h, int bands, Point location)
      根据具有指定数据类型,宽度,高度和频带数的BandedSampleModel创建栅格。
      static WritableRaster createBandedRaster​(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bankIndices, int[] bandOffsets, Point location)
      根据指定的DataBuffer,width,height,scanline stride,bank index和band offsets创建一个基于BandedSampleModel的光栅。
      Raster createChild​(int parentX, int parentY, int width, int height, int childMinX, int childMinY, int[] bandList)
      返回一个新的Raster,它共享此Raster DataBuffer的全部或部分。
      WritableRaster createCompatibleWritableRaster​()
      创建与此Raster相同大小的兼容WritableRaster,具有相同的SampleModel和新的已初始化的DataBuffer。
      WritableRaster createCompatibleWritableRaster​(int w, int h)
      创建一个具有指定大小的兼容WritableRaster,一个新的SampleModel和一个新的初始化DataBuffer。
      WritableRaster createCompatibleWritableRaster​(int x, int y, int w, int h)
      创建一个兼容的WritableRaster,具有指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。
      WritableRaster createCompatibleWritableRaster​(Rectangle rect)
      创建一个兼容的WritableRaster,它具有由rect指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。
      static WritableRaster createInterleavedRaster​(int dataType, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
      基于具有指定数据类型,宽度,高度,扫描线步长,像素步长和带偏移的PixelInterleavedSampleModel创建光栅。
      static WritableRaster createInterleavedRaster​(int dataType, int w, int h, int bands, Point location)
      基于具有指定数据类型,宽度,高度和频带数的PixelInterleavedSampleModel创建光栅。
      static WritableRaster createInterleavedRaster​(DataBuffer dataBuffer, int w, int h, int scanlineStride, int pixelStride, int[] bandOffsets, Point location)
      基于具有指定DataBuffer,宽度,高度,扫描线步长,像素步幅和带偏移的PixelInterleavedSampleModel创建光栅。
      static WritableRaster createPackedRaster​(int dataType, int w, int h, int[] bandMasks, Point location)
      基于具有指定数据类型,宽度,高度和带屏蔽的SinglePixelPackedSampleModel创建光栅。
      static WritableRaster createPackedRaster​(int dataType, int w, int h, int bands, int bitsPerBand, Point location)
      根据指定的数据类型,宽度,高度,频带数和每个频段的位数,打包SampleModel创建光栅。
      static WritableRaster createPackedRaster​(DataBuffer dataBuffer, int w, int h, int scanlineStride, int[] bandMasks, Point location)
      基于具有指定DataBuffer,宽度,高度,扫描线步长和带屏蔽的SinglePixelPackedSampleModel创建光栅。
      static WritableRaster createPackedRaster​(DataBuffer dataBuffer, int w, int h, int bitsPerPixel, Point location)
      基于具有指定DataBuffer,宽度,高度和每像素位数的MultiPixelPackedSampleModel创建光栅。
      static Raster createRaster​(SampleModel sm, DataBuffer db, Point location)
      使用指定的SampleModel和DataBuffer创建光栅。
      Raster createTranslatedChild​(int childMinX, int childMinY)
      创建一个具有相同大小的光栅,SampleModel和DataBuffer,但是具有不同的位置。
      static WritableRaster createWritableRaster​(SampleModel sm, DataBuffer db, Point location)
      使用指定的SampleModel和DataBuffer创建WritableRaster。
      static WritableRaster createWritableRaster​(SampleModel sm, Point location)
      使用指定的SampleModel创建WritableRaster。
      Rectangle getBounds​()
      返回此栅格的边界矩形。
      DataBuffer getDataBuffer​()
      返回与此栅格相关联的DataBuffer。
      Object getDataElements​(int x, int y, int w, int h, Object outData)
      返回TransferType类型的原始数组中指定的像素矩形的像素数据。
      Object getDataElements​(int x, int y, Object outData)
      返回TransferType类型的原始数组中单个像素的数据。
      int getHeight​()
      返回栅格的高度(像素)。
      int getMinX​()
      返回栅格的最小有效X坐标。
      int getMinY​()
      返回栅格的最小有效Y坐标。
      int getNumBands​()
      返回此光栅中的带数(每像素的样本数)。
      int getNumDataElements​()
      返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。
      Raster getParent​()
      返回此栅格的父栅格(如果有)或null。
      double[] getPixel​(int x, int y, double[] dArray)
      返回指定像素的double数组中的样本。
      float[] getPixel​(int x, int y, float[] fArray)
      返回指定像素的float数组中的样本。
      int[] getPixel​(int x, int y, int[] iArray)
      返回指定像素的int数组中的样本。
      double[] getPixels​(int x, int y, int w, int h, double[] dArray)
      返回一个包含像素矩形的所有样本的双数组,每个数组元素一个样本。
      float[] getPixels​(int x, int y, int w, int h, float[] fArray)
      返回一个float数组,其中包含一个像素矩形的所有样本,每个数组元素一个样本。
      int[] getPixels​(int x, int y, int w, int h, int[] iArray)
      返回一个包含矩形像素的所有样本的int数组,每个数组元素一个样本。
      int getSample​(int x, int y, int b)
      将位于(x,y)处的像素的指定带中的样本返回为int。
      double getSampleDouble​(int x, int y, int b)
      将位于(x,y)的像素的指定带中的样本返回为双倍。
      float getSampleFloat​(int x, int y, int b)
      将位于(x,y)处的像素的指定带中的样本作为浮点返回。
      SampleModel getSampleModel​()
      返回描述图像数据布局的SampleModel。
      int getSampleModelTranslateX​()
      从SampleModel的坐标系返回到Raster的X转换。
      int getSampleModelTranslateY​()
      从SampleModel的坐标系返回到Raster的Y转换。
      double[] getSamples​(int x, int y, int w, int h, int b, double[] dArray)
      返回双阵列中指定的像素矩形的指定波段的样本,每个数组元素一个样本。
      float[] getSamples​(int x, int y, int w, int h, int b, float[] fArray)
      返回浮点数组中指定的像素矩形的指定波段的样本,每个数组元素一个样本。
      int[] getSamples​(int x, int y, int w, int h, int b, int[] iArray)
      返回int数组中指定的像素矩形的指定带的样本,每个数组元素一个样本。
      int getTransferType​()
      返回用于通过getDataElements和setDataElements方法传输像素的TransferType。
      int getWidth​()
      返回栅格宽度(以像素为单位)。
    • 字段详细信息

      • sampleModel

        protected SampleModel sampleModel
        SampleModel描述了这个栅格的像素如何存储在DataBuffer中。
      • dataBuffer

        protected DataBuffer dataBuffer
        DataBuffer存储图像数据。
      • minX

        protected int minX
        此栅格左上角像素的X坐标。
      • minY

        protected int minY
        此光栅左上角像素的Y坐标。
      • width

        protected int width
        这个光栅的宽度。
      • height

        protected int height
        这个光栅的高度。
      • sampleModelTranslateX

        protected int sampleModelTranslateX
        从Raster的SampleModel的坐标空间到光栅的X平移。
      • sampleModelTranslateY

        protected int sampleModelTranslateY
        从Raster的SampleModel的坐标空间到栅格的坐标空间的Y翻译。
      • numBands

        protected int numBands
        光栅中的乐队数。
      • numDataElements

        protected int numDataElements
        每像素DataBuffer数据元素的数量。
      • parent

        protected Raster parent
        此栅格的父项,或null。
    • 构造方法详细信息

      • Raster

        protected Raster​(SampleModel sampleModel,
                         Point origin)
        使用给定的SampleModel构造光栅。 光栅的左上角是原点,它与SampleModel的大小相同。 自动创建一个足够大的描述光栅的DataBuffer。
        参数
        sampleModel - 指定布局的SampleModel
        origin - 指定原点的点
        异常
        RasterFormatException - 如果计算 origin.x + sampleModel.getWidth()origin.y + sampleModel.getHeight()导致整数溢出
        NullPointerException - sampleModelorigin为空
      • Raster

        protected Raster​(SampleModel sampleModel,
                         DataBuffer dataBuffer,
                         Point origin)
        使用给定的SampleModel和DataBuffer构造光栅。 光栅的左上角是原点,它与SampleModel的大小相同。 DataBuffer未初始化,必须与SampleModel兼容。
        参数
        sampleModel - 指定布局的SampleModel
        dataBuffer - 包含图像数据的DataBuffer
        origin - 指定原点的点
        异常
        RasterFormatException - 如果计算 origin.x + sampleModel.getWidth()origin.y + sampleModel.getHeight()导致整数溢出
        NullPointerException - sampleModelorigin为null
      • Raster

        protected Raster​(SampleModel sampleModel,
                         DataBuffer dataBuffer,
                         Rectangle aRegion,
                         Point sampleModelTranslate,
                         Raster parent)
        使用给定的SampleModel,DataBuffer和父构造栅格。 aRegion指定新栅格的边界矩形。 当翻译成基础栅格的坐标系时,aRegion必须由基础栅格包含。 (基础栅格是没有父项的栅格的祖先。)sampleModelTranslate指定新的栅格的sampleModelTranslateX和sampleModelTranslateY值。 请注意,这个构造函数通常应该由其他构造函数调用或创建方法,不应该直接使用。
        参数
        sampleModel - 指定布局的SampleModel
        dataBuffer - 包含图像数据的DataBuffer
        aRegion - 指定图像区域的Rectangle
        sampleModelTranslate - 指定从SampleModel到光栅坐标的转换的点
        parent - 此栅格的父(如果有)
        异常
        NullPointerException -如果任何 sampleModeldataBufferaRegion或者 sampleModelTranslate为null
        RasterFormatException - 如果 aRegion宽度或高度小于或等于零,或计算 aRegion.x + aRegion.widthaRegion.y + aRegion.height导致整数溢出
    • 方法详细信息

      • createInterleavedRaster

        public static WritableRaster createInterleavedRaster​(int dataType,
                                                             int w,
                                                             int h,
                                                             int bands,
                                                             Point location)
        基于具有指定数据类型,宽度,高度和频带数的PixelInterleavedSampleModel创建光栅。

        光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        请注意,不支持交织的DataBuffer.TYPE_INT 要创建一个类型为DataBuffer.TYPE_INT的1波段光栅,请使用Raster.createPackedRaster()。

        目前唯一支持的数据类型是TYPE_BYTE和TYPE_USHORT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        bands - 乐队的数量
        location - Raster
        结果
        具有指定数据类型,宽度,高度和频带数的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
      • createInterleavedRaster

        public static WritableRaster createInterleavedRaster​(int dataType,
                                                             int w,
                                                             int h,
                                                             int scanlineStride,
                                                             int pixelStride,
                                                             int[] bandOffsets,
                                                             Point location)
        基于具有指定数据类型,宽度,高度,扫描线步长,像素步长和带偏移的PixelInterleavedSampleModel创建光栅。 频带数由bandOffsets.length推断出来。

        光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        请注意,不支持交织的DataBuffer.TYPE_INT栅格。 要创建一个类型为DataBuffer.TYPE_INT的1波段光栅,请使用Raster.createPackedRaster()。

        目前唯一支持的数据类型是TYPE_BYTE和TYPE_USHORT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的像素宽度
        h - 图像数据的高度(以像素为单位)
        scanlineStride - 图像数据的行走
        pixelStride - 图像数据的像素步幅
        bandOffsets - 所有频带的偏移量
        location - 左上角的 Raster
        结果
        具有指定数据类型,宽度,高度,扫描线步长,像素步幅和带偏移的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException - 如果 dataType不是支持的数据类型之一,即 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
      • createBandedRaster

        public static WritableRaster createBandedRaster​(int dataType,
                                                        int w,
                                                        int h,
                                                        int bands,
                                                        Point location)
        根据具有指定数据类型,宽度,高度和频带数的BandedSampleModel创建栅格。

        光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        bands - 乐队的数量
        location - 左上角的 Raster
        结果
        具有指定数据类型,宽度,高度和频带数的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        ArrayIndexOutOfBoundsException - 如果 bands小于1
      • createBandedRaster

        public static WritableRaster createBandedRaster​(int dataType,
                                                        int w,
                                                        int h,
                                                        int scanlineStride,
                                                        int[] bankIndices,
                                                        int[] bandOffsets,
                                                        Point location)
        基于具有指定数据类型,宽度,高度,扫描线步长,银行索引和带偏移的BandedSampleModel创建光栅。 band的数量是由bankIndices.length和bandOffsets.length推断的,它们必须相同。

        光栅的左上角由位置参数给出。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        scanlineStride - 图像数据的行走
        bankIndices - 每个乐队的银行指数
        bandOffsets - 所有频段的偏移量
        location - 左上角的 Raster
        结果
        具有指定数据类型,宽度,高度,扫描线步长,库索引和带偏移的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
        ArrayIndexOutOfBoundsException - 如果 bankIndicesbandOffsetsnull
      • createPackedRaster

        public static WritableRaster createPackedRaster​(int dataType,
                                                        int w,
                                                        int h,
                                                        int[] bandMasks,
                                                        Point location)
        基于具有指定数据类型,宽度,高度和带屏蔽的SinglePixelPackedSampleModel创建光栅。 频带的数量是从bandMasks.length推断出来的。

        光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        bandMasks - 包含每个频带的条目的数组
        location - 左上角的 Raster
        结果
        具有指定数据类型,宽度,高度和带掩码的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      • createPackedRaster

        public static WritableRaster createPackedRaster​(int dataType,
                                                        int w,
                                                        int h,
                                                        int bands,
                                                        int bitsPerBand,
                                                        Point location)
        根据指定的数据类型,宽度,高度,频带数和每个频段的位数,打包SampleModel创建光栅。 如果频带数为1,则SampleModel将为MultiPixelPackedSampleModel。

        如果频带数多于一个,则SampleModel将为SinglePixelPackedSampleModel,每个频带都具有位数位数。 在任何一种情况下,必须满足相应SampleModel对dataType和bitsPerBand的要求。

        光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。 dataType参数应该是DataBuffer类中定义的枚举值之一。

        目前唯一支持的数据类型是TYPE_BYTE,TYPE_USHORT和TYPE_INT。

        参数
        dataType - 存储样本的数据类型
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        bands - 乐队的数量
        bitsPerBand - 每个频段的位数
        location - 左上角的 Raster
        结果
        具有指定数据类型,宽度,高度,频带数和每个频带位的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException - 如果 bitsPerBandbands的产品大于持有的位数 dataType
        IllegalArgumentException - 如果 bitsPerBandbands不大于零
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
      • createInterleavedRaster

        public static WritableRaster createInterleavedRaster​(DataBuffer dataBuffer,
                                                             int w,
                                                             int h,
                                                             int scanlineStride,
                                                             int pixelStride,
                                                             int[] bandOffsets,
                                                             Point location)
        基于具有指定DataBuffer,宽度,高度,扫描线步长,像素步幅和带偏移的PixelInterleavedSampleModel创建光栅。 频带数由bandOffsets.length推断出来。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。

        请注意,不支持交织的DataBuffer.TYPE_INT栅格。 要创建类型为DataBuffer.TYPE_INT的1波段光栅,请使用Raster.createPackedRaster()。

        参数
        dataBuffer - 包含图像数据的 DataBuffer
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        scanlineStride - 图像数据的行走
        pixelStride - 图像数据的像素步幅
        bandOffsets - 所有频带的偏移量
        location - 左上角的 Raster
        结果
        具有指定的 DataBuffer的WritableRaster对象,宽度,高度,扫描线步幅,像素步幅和带偏移。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
        RasterFormatException - 如果 dataBuffer有多个银行。
        NullPointerException - 如果 dataBuffer为空
      • createBandedRaster

        public static WritableRaster createBandedRaster​(DataBuffer dataBuffer,
                                                        int w,
                                                        int h,
                                                        int scanlineStride,
                                                        int[] bankIndices,
                                                        int[] bandOffsets,
                                                        Point location)
        根据指定的DataBuffer,width,height,scanline stride,bank index和band offsets创建一个基于BandedSampleModel的光栅。 band的数量是由bankIndices.length和bandOffsets.length推断的,它们必须相同。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        dataBuffer - 包含图像数据的 DataBuffer
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        scanlineStride - 图像数据的行走
        bankIndices - 每个乐队的银行指数
        bandOffsets - 所有频段的偏移量
        location - 左上角的 Raster
        结果
        具有指定的 DataBuffer的WritableRaster对象,宽度,高度,扫描线步长,银行索引和带偏移。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
        NullPointerException - 如果 dataBuffer为空
      • createPackedRaster

        public static WritableRaster createPackedRaster​(DataBuffer dataBuffer,
                                                        int w,
                                                        int h,
                                                        int scanlineStride,
                                                        int[] bandMasks,
                                                        Point location)
        基于具有指定DataBuffer,宽度,高度,扫描线步长和带屏蔽的SinglePixelPackedSampleModel创建光栅。 频带的数量是从bandMasks.length推断出来的。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        dataBuffer - 包含图像数据的 DataBuffer
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的高度(像素)
        scanlineStride - 图像数据的行走
        bandMasks - 一个包含每个频带条目的数组
        location - 左上角的 Raster
        结果
        具有指定的 DataBuffer ,宽度,高度,扫描线步幅和带屏蔽的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
        RasterFormatException - 如果 dataBuffer有多个银行。
        NullPointerException - 如果 dataBuffer为空
      • createPackedRaster

        public static WritableRaster createPackedRaster​(DataBuffer dataBuffer,
                                                        int w,
                                                        int h,
                                                        int bitsPerPixel,
                                                        Point location)
        基于具有指定DataBuffer,宽度,高度和每像素位数的MultiPixelPackedSampleModel创建光栅。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        dataBuffer - 包含图像数据的 DataBuffer
        w - 图像数据的宽度(以像素为单位)
        h - 图像数据的像素高度
        bitsPerPixel - 每个像素的位数
        location - 左上角的 Raster
        结果
        具有指定 DataBuffer ,宽度,高度和每像素位数的WritableRaster对象。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 location.x + wlocation.y + h导致整数溢出
        IllegalArgumentException -如果 dataType是不支持的数据类型,这是一个 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORTDataBuffer.TYPE_INT
        RasterFormatException - 如果 dataBuffer有多个银行。
        NullPointerException - 如果 dataBuffer为空
      • createRaster

        public static Raster createRaster​(SampleModel sm,
                                          DataBuffer db,
                                          Point location)
        使用指定的SampleModel和DataBuffer创建光栅。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        sm - 指定的 SampleModel
        db - 指定的 DataBuffer
        location - 左上角的 Raster
        结果
        一个 Raster具有指定 SampleModelDataBuffer ,和位置。
        异常
        RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight()导致整数溢出
        RasterFormatException - 如果 db有多个银行,而 sm是PixelInterleavedSampleModel,SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。
        NullPointerException - 如果SampleModel或DataBuffer为null
      • createWritableRaster

        public static WritableRaster createWritableRaster​(SampleModel sm,
                                                          Point location)
        使用指定的SampleModel创建WritableRaster。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        sm - 指定的 SampleModel
        location - WritableRaster
        结果
        一个 WritableRaster与指定的 SampleModel和位置。
        异常
        RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight()导致整数溢出
      • createWritableRaster

        public static WritableRaster createWritableRaster​(SampleModel sm,
                                                          DataBuffer db,
                                                          Point location)
        使用指定的SampleModel和DataBuffer创建WritableRaster。 光栅的左上角由位置参数给出。 如果位置为空,则使用(0,0)。
        参数
        sm - 指定的 SampleModel
        db - 指定的 DataBuffer
        location - WritableRaster
        结果
        一个 WritableRaster具有指定 SampleModelDataBuffer ,和位置。
        异常
        RasterFormatException - 如果计算 location.x + sm.getWidth()location.y + sm.getHeight()导致整数溢出
        RasterFormatException - 如果 db有多个银行,而 sm是PixelInterleavedSampleModel,SinglePixelPackedSampleModel或MultiPixelPackedSampleModel。
        NullPointerException - 如果SampleModel或DataBuffer为null
      • getParent

        public Raster getParent​()
        返回此栅格的父栅格(如果有)或null。
        结果
        nullnull
      • getSampleModelTranslateX

        public final int getSampleModelTranslateX​()
        从SampleModel的坐标系返回到Raster的X转换。 要将像素的X坐标从光栅坐标系转换为SampleModel坐标系,必须减去此值。
        结果
        从Raster的SampleModel的坐标空间到光栅的X平移。
      • getSampleModelTranslateY

        public final int getSampleModelTranslateY​()
        从SampleModel的坐标系返回到Raster的Y转换。 要将像素的Y坐标从光栅坐标系转换为SampleModel坐标系,必须减去此值。
        结果
        从Raster的SampleModel的坐标空间到Raster的坐标空间的Y翻译。
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​()
        创建与此Raster相同大小的兼容WritableRaster,具有相同的SampleModel和新的已初始化的DataBuffer。
        结果
        兼容的 WritableRaster具有相同的样本模型和新的数据缓冲区。
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(int w,
                                                             int h)
        创建一个具有指定大小的兼容WritableRaster,一个新的SampleModel和一个新的初始化DataBuffer。
        参数
        w - 新的 WritableRaster的指定宽度
        h - 新的 WritableRaster的指定高度
        结果
        具有指定大小的兼容的 WritableRaster和新的样本模型和数据缓冲区。
        异常
        RasterFormatException - 如果宽度或高度小于或等于零。
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(Rectangle rect)
        创建一个兼容的WritableRaster,它具有由rect指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。
        参数
        rect - 一个规定 Rectangle的大小和位置的 WritableRaster
        结果
        具有指定大小和位置的兼容的 WritableRaster和新的样本模型和数据缓冲区。
        异常
        RasterFormatException - 如果 rect宽度或高度小于或等于零,或计算 rect.x + rect.widthrect.y + rect.height导致整数溢出
        NullPointerException - 如果 rect为空
      • createCompatibleWritableRaster

        public WritableRaster createCompatibleWritableRaster​(int x,
                                                             int y,
                                                             int w,
                                                             int h)
        创建一个兼容的WritableRaster,具有指定的位置(minX,minY)和size(width,height),一个新的SampleModel和一个新的初始化的DataBuffer。
        参数
        x -在X中的左上角坐标 WritableRaster
        y -的Y的左上角坐标 WritableRaster
        w - 指定的宽度为 WritableRaster
        h - 指定的高度为 WritableRaster
        结果
        具有指定大小和位置的兼容的 WritableRaster和新的样本模型和数据缓冲区。
        异常
        RasterFormatException - 如果 wh小于或等于零,或计算 x + wy + h导致整数溢出
      • createTranslatedChild

        public Raster createTranslatedChild​(int childMinX,
                                            int childMinY)
        创建一个具有相同大小的光栅,SampleModel和DataBuffer,但是具有不同的位置。 新的光栅将具有对当前光栅的引用,可通过其getParent()方法访问。
        参数
        childMinX - 新的 Raster左上角的X坐标
        childMinY - 新的 Raster左上角的Y坐标
        结果
        一个新的 Raster具有相同的大小,SampleModel和DataBuffer这个 Raster ,但是具有指定的位置。
        异常
        RasterFormatException - 如果计算 childMinX + this.getWidth()childMinY + this.getHeight()导致整数溢出
      • createChild

        public Raster createChild​(int parentX,
                                  int parentY,
                                  int width,
                                  int height,
                                  int childMinX,
                                  int childMinY,
                                  int[] bandList)
        返回一个新的Raster,它共享此Raster DataBuffer的全部或部分。 新的光栅将具有对当前光栅的引用,可通过其getParent()方法访问。

        parentX,parentY,width和height参数在此栅格坐标空间中形成一个Rectangle,指示要共享的像素面积。 如果此Rectangle不包含当前栅格的边界,将抛出一个错误。

        新的光栅可以另外被转换为与当前光栅所使用的平面不同的坐标系。 childMinX和childMinY参数给出返回的Raster的左上角像素的新(x,y)坐标; 新栅格中的坐标(childMinX,childMinY)将映射到与当前栅格中的坐标(parentX,parentY)相同的像素。

        新的栅格可以被定义为仅通过bandList参数仅包含当前栅格的可能重新排序的波段的子集。 如果bandList为null,则将其当前顺序包括当前栅格的所有频带。

        要创建一个包含当前栅格的子区域的新栅格,但共享其坐标系和带,则该方法应该调用childMinX等于parentX,childMinY等于parentY,bandList等于null。

        参数
        parentX - 此栅格坐标中左上角的X坐标
        parentY - 此栅格坐标中左上角的Y坐标
        width - 从(parentX,parentY)开始的区域的宽度
        height - 从(parentX,parentY)开始的区域的高度。
        childMinX - 返回光栅左上角的X坐标
        childMinY - 返回光栅左上角的Y坐标
        bandList - 频带索引的数组,或为空使用所有频带
        结果
        一个新的 Raster
        异常
        RasterFormatException - 如果指定的子区域在栅格边界之外。
        RasterFormatException -如果 widthheight小于或等于0,或者计算任何的 parentX + widthparentY + heightchildMinX + width ,或 childMinY + height导致整数溢出
      • getBounds

        public Rectangle getBounds​()
        返回此栅格的边界矩形。 此函数返回与getMinX / MinY / Width / Height相同的信息。
        结果
        这个 Raster的边框。
      • getMinX

        public final int getMinX​()
        返回栅格的最小有效X坐标。
        结果
        这个 Raster的最小x坐标。
      • getMinY

        public final int getMinY​()
        返回栅格的最小有效Y坐标。
        结果
        这个 Raster的最小y坐标。
      • getWidth

        public final int getWidth​()
        返回栅格宽度(以像素为单位)。
        结果
        该宽度为 Raster
      • getHeight

        public final int getHeight​()
        返回栅格的高度(像素)。
        结果
        这个高度这个 Raster
      • getNumBands

        public final int getNumBands​()
        返回此光栅中的带数(每像素的样本数)。
        结果
        这个 Raster的乐队的 Raster
      • getNumDataElements

        public final int getNumDataElements​()
        返回通过getDataElements和setDataElements方法传输一个像素所需的数据元素数。 当通过这些方法传输像素时,可以根据底层SampleModel的实现,以打包或打包的格式传输它们。 使用这些方法,像素被传递给由getTransferType()给出的原始类型的getNumDataElements()元素的数组。 TransferType可能与DataBuffer的存储数据类型相同或不同。
        结果
        数据元素的数量。
      • getTransferType

        public final int getTransferType​()
        返回用于通过getDataElements和setDataElements方法传输像素的TransferType。 当通过这些方法传输像素时,可以根据底层SampleModel的实现,以打包或打包的格式传输它们。 使用这些方法,像素被传递给由getTransferType()给出的原始类型的getNumDataElements()元素的数组。 TransferType可能与DataBuffer的存储数据类型相同或不同。 TransferType将是DataBuffer中定义的类型之一。
        结果
        这种转移类型。
      • getDataBuffer

        public DataBuffer getDataBuffer​()
        返回与此栅格相关联的DataBuffer。
        结果
        DataBufferRaster
      • getSampleModel

        public SampleModel getSampleModel​()
        返回描述图像数据布局的SampleModel。
        结果
        SampleModel的这个 Raster
      • getDataElements

        public Object getDataElements​(int x,
                                      int y,
                                      Object outData)
        返回TransferType类型的原始数组中单个像素的数据。 对于Java 2D(tm)API支持的图像数据,这将是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。 数据可以以压缩格式返回,从而提高数据传输的效率。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。 如果输入对象为非空,则引用ClassCastException,并引用除TransferType数组以外的任何内容。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        outData - 由getTransferType()和length getNumDataElements()定义的类型数组的对象引用。 如果为null,则将分配适当类型和大小的数组
        结果
        由getTransferType()与请求的像素数据定义的类型的数组的对象引用。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不是边界,或者outData太小,不能容纳输出。
        另请参见:
        SampleModel.getDataElements(int, int, Object, DataBuffer)
      • getDataElements

        public Object getDataElements​(int x,
                                      int y,
                                      int w,
                                      int h,
                                      Object outData)
        返回TransferType类型的原始数组中指定的像素矩形的像素数据。 对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。 数据可以以压缩格式返回,从而提高数据传输的效率。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。 如果输入对象为非空,则引用ClassCastException,并引用除TransferType数组以外的任何内容。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        outData - 由getTransferType()和length w * h * getNumDataElements()定义的类型的数组的对象引用。 如果为null,则将分配适当类型和大小的数组。
        结果
        由getTransferType()与请求的像素数据定义的类型的数组的对象引用。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者outData太小,不能容纳输出。
        另请参见:
        SampleModel.getDataElements(int, int, int, int, Object, DataBuffer)
      • getPixel

        public int[] getPixel​(int x,
                              int y,
                              int[] iArray)
        返回指定像素的int数组中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        iArray - 可选的预分配int数组
        结果
        指定像素的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果iArray太小,不能容纳输出。
      • getPixel

        public float[] getPixel​(int x,
                                int y,
                                float[] fArray)
        返回指定像素的float数组中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        fArray - 可选的预分配浮点数组
        结果
        指定像素的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果fArray太小,不能容纳输出。
      • getPixel

        public double[] getPixel​(int x,
                                 int y,
                                 double[] dArray)
        返回指定像素的double数组中的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        dArray - 可选的预分配双阵列
        结果
        指定像素的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果dArray太小,不能容纳输出。
      • getPixels

        public int[] getPixels​(int x,
                               int y,
                               int w,
                               int h,
                               int[] iArray)
        返回一个包含矩形像素的所有样本的int数组,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        iArray - 可选预先分配的int数组
        结果
        指定像素矩形的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界内,或者如果iArray太小,不能容纳输出。
      • getPixels

        public float[] getPixels​(int x,
                                 int y,
                                 int w,
                                 int h,
                                 float[] fArray)
        返回一个float数组,其中包含一个像素矩形的所有样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        fArray - 可选预先分配的浮点数组
        结果
        指定像素矩形的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果fArray太小,不能容纳输出。
      • getPixels

        public double[] getPixels​(int x,
                                  int y,
                                  int w,
                                  int h,
                                  double[] dArray)
        返回一个包含像素矩形的所有样本的双数组,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        dArray - 可选预先分配的双阵列
        结果
        指定像素矩形的样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果dArray太小,不能容纳输出。
      • getSample

        public int getSample​(int x,
                             int y,
                             int b)
        将位于(x,y)处的像素的指定带中的样本返回为int。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        b - 乐队返回
        结果
        在指定频带中的样本在指定坐标处的像素。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • getSampleFloat

        public float getSampleFloat​(int x,
                                    int y,
                                    int b)
        将位于(x,y)处的像素的指定带中的样本作为浮点返回。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        b - 乐队返回
        结果
        在指定频带中的样本在指定坐标处的像素。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • getSampleDouble

        public double getSampleDouble​(int x,
                                      int y,
                                      int b)
        将位于(x,y)的像素的指定带中的样本返回为双倍。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标
        y - 像素位置的Y坐标
        b - 乐队返回
        结果
        在指定频带中的样本在指定坐标处的像素。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • getSamples

        public int[] getSamples​(int x,
                                int y,
                                int w,
                                int h,
                                int b,
                                int[] iArray)
        返回int数组中指定的像素矩形的指定带的样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        b - 乐队返回
        iArray - 可选预先分配的int数组
        结果
        指定带宽的样本为指定的像素矩形。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界,或者如果iArray太小而不能容纳输出。
      • getSamples

        public float[] getSamples​(int x,
                                  int y,
                                  int w,
                                  int h,
                                  int b,
                                  float[] fArray)
        返回浮点数组中指定的像素矩形的指定波段的样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        b - 乐队返回
        fArray - 可选预先分配的浮点数组
        结果
        指定带宽的样本为指定的像素矩形。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内,或者如果fArray太小而不能容纳输出。
      • getSamples

        public double[] getSamples​(int x,
                                   int y,
                                   int w,
                                   int h,
                                   int b,
                                   double[] dArray)
        返回双阵列中指定的像素矩形的指定波段的样本,每个数组元素一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标
        y - 左上角像素位置的Y坐标
        w - 像素矩形的宽度
        h - 像素矩形的高度
        b - 乐队返回
        dArray - 可选预先分配的双阵列
        结果
        指定带宽的样本为指定的像素矩形。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或带索引不在边界,或者如果dArray太小而不能保存输出。