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

Class WritableRaster



  • public class WritableRaster
    extends Raster
    该类扩展了Raster,以提供像素写入功能。 有关栅格存储像素的说明,请参阅栅格的类注释。

    这个类的构造函数是受保护的。 要实例化WritableRaster,请在Raster类中使用createWritableRaster工厂方法之一。

    • 构造方法详细信息

      • WritableRaster

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

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

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

      • getWritableParent

        public WritableRaster getWritableParent​()
        返回此WritableRaster的父WritableRaster(如果有),否则返回null。
        结果
        这是 WritableRaster的父母,还是 null
      • createWritableTranslatedChild

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

        public WritableRaster createWritableChild​(int parentX,
                                                  int parentY,
                                                  int w,
                                                  int h,
                                                  int childMinX,
                                                  int childMinY,
                                                  int[] bandList)
        返回一个新的WritableRaster,它分享这个WritableRaster的DataBuffer的全部或部分。 新的WritableRaster将拥有对当前WritableRaster的引用,可通过其getParent()和getWritableParent()方法访问。

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

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

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

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

        参数
        parentX - 此WritableRaster坐标中左上角的X坐标。
        parentY - 此WritableRaster坐标中左上角的Y坐标。
        w - 从(parentX,parentY)开始的区域的宽度。
        h - 从(parentX,parentY)开始的区域的高度。
        childMinX - 返回的WritableRaster的左上角的X坐标。
        childMinY - 返回的WritableRaster的左上角的Y坐标。
        bandList - 频带索引数组,或为空,以使用所有频带。
        结果
        一个 WritableRaster共享的全部或部分 DataBuffer如此 WritableRaster
        异常
        RasterFormatException - 如果子区域在栅格边界之外。
        RasterFormatException -如果 wh小于或等于0,或者计算任何的 parentX + wparentY + hchildMinX + w ,或 childMinY + h导致整数溢出
      • setDataElements

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

        public void setDataElements​(int x,
                                    int y,
                                    Raster inRaster)
        从输入光栅设置像素矩形的数据。 输入光栅必须与此WritableRaster兼容,因为它们必须具有相同数量的条带,相应的条带必须具有与每个样本相同的位数,TransferTypes和NumDataElements必须相同,并且getDataElements / setDataElements使用的打包必须相同。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        inRaster - 光栅包含要放置在x,y处的数据。
        异常
        NullPointerException - 如果inRaster为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界内。
      • setDataElements

        public void setDataElements​(int x,
                                    int y,
                                    int w,
                                    int h,
                                    Object inData)
        从TransferType类型的原始数组中设置一个像素矩形的数据。 对于Java 2D API支持的图像数据,这将是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT,DataBuffer.TYPE_INT,DataBuffer.TYPE_SHORT,DataBuffer.TYPE_FLOAT或DataBuffer.TYPE_DOUBLE之一。 阵列中的数据可以是压缩格式,从而提高数据传输的效率。 如果坐标不在边界,或者inData不够大以容纳像素数据,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。 如果输入对象不为空,并引用除TransferType数组之外的任何其他内容,则抛出ClassCastException。
        参数
        x - 左上角像素位置的X坐标。
        y - 左上角像素位置的Y坐标。
        w - 像素矩形的宽度。
        h - 像素矩形的高度。
        inData - 由getTransferType()定义的类型的数组的对象引用,以及包含要放置在x,y和x + w-1,y + h-1之间的像素数据的长度w * h * getNumDataElements()的对象引用。
        异常
        NullPointerException - 如果inData为空。
        ArrayIndexOutOfBoundsException - 如果坐标不是边界,或者如果inData太小,不能容纳输入。
        另请参见:
        SampleModel.setDataElements(int, int, int, int, Object, DataBuffer)
      • setRect

        public void setRect​(Raster srcRaster)
        将像素从Raster srcRaster复制到WritableRaster。 srcRaster中的每个像素都将复制到该栅格中的相同x,y地址,除非地址超出了此栅格的边界。 srcRaster必须具有与此WritableRaster相同数量的乐队。 该副本是源样本的简单副本到相应的目标样本。

        如果源和目标光栅的所有样本都是整数型,小于或等于32位,则调用此方法相当于对所有x,y地址在两个栅格中有效的地址执行以下代码。

           Raster srcRaster; WritableRaster dstRaster; for (int b = 0; b < srcRaster.getNumBands(); b++) { dstRaster.setSample(x, y, b, srcRaster.getSample(x, y, b)); }  
        因此,当将积分型源复制到整体型目的地时,如果源样本大小大于特定频带的目的地采样大小,则源样本的高位将被截断。 如果源样本大小小于特定频带的目的地大小,则目标的高阶位将根据srcRaster的SampleModel将该样本视为有符号或无符号数量进行零扩展或符号扩展。

        将浮点数或双源复制到整数型目的地时,将将每个源样本转换为目标类型。 当将积分类型的源复制到浮点或双目标时,首先将源转换为32位int(如有必要),使用上述的积分类型的规则,然后将int转换为float或double。

        参数
        srcRaster - 复制像素的栅格。
        异常
        NullPointerException - 如果srcRaster为空。
      • setRect

        public void setRect​(int dx,
                            int dy,
                            Raster srcRaster)
        将像素从Raster srcRaster复制到WritableRaster。 对于srcRaster中的每个(x,y)地址,相应的像素将复制到该WritableRaster中的地址(x + dx,y + dy),除非(x + dx,y + dy)超出此栅格的边界。 srcRaster必须具有与此WritableRaster相同数量的乐队。 该副本是源样本的简单副本到相应的目标样本。 详情请参阅setRect(Raster)
        参数
        dx - 从src空间到副本的dst空间的X转换因子。
        dy - 从src空间到副本的dst空间的Y翻译因子。
        srcRaster - 复制像素的栅格。
        异常
        NullPointerException - 如果srcRaster为空。
      • setPixel

        public void setPixel​(int x,
                             int y,
                             int[] iArray)
        使用int数组的样本数据来设置DataBuffer中的一个像素。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        iArray - int数组中的输入样本。
        异常
        NullPointerException - 如果iArray为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果iArray太小,不能容纳输入。
      • setPixel

        public void setPixel​(int x,
                             int y,
                             float[] fArray)
        使用用于输入的样本的浮点数组来设置DataBuffer中的像素。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        fArray - 浮点数组中的输入样本。
        异常
        NullPointerException - 如果fArray为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果fArray太小,不能容纳输入。
      • setPixel

        public void setPixel​(int x,
                             int y,
                             double[] dArray)
        在DataBuffer中使用双重样本数组来设置像素。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        dArray - 双数组中的输入样本。
        异常
        NullPointerException - 如果 NullPointerException为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果dArray太小,不能容纳输入。
      • setPixels

        public void setPixels​(int x,
                              int y,
                              int w,
                              int h,
                              int[] iArray)
        从包含每个数组元素一个样本的int数组中设置一个像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标。
        y - 左上角像素位置的Y坐标。
        w - 像素矩形的宽度。
        h - 像素矩形的高度。
        iArray - 输入int像素数组。
        异常
        NullPointerException - 如果iArray为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果iArray太小,不能容纳输入。
      • setPixels

        public void setPixels​(int x,
                              int y,
                              int w,
                              int h,
                              float[] fArray)
        从包含每个数组元素一个样本的浮点数组设置一个像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标。
        y - 左上角像素位置的Y坐标。
        w - 像素矩形的宽度。
        h - 像素矩形的高度。
        fArray - 输入浮点像素数组。
        异常
        NullPointerException - 如果fArray为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果fArray太小,不能容纳输入。
      • setPixels

        public void setPixels​(int x,
                              int y,
                              int w,
                              int h,
                              double[] dArray)
        从包含每个数组元素一个样本的双数组中设置一个像素矩形的所有样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标。
        y - 左上角像素位置的Y坐标。
        w - 像素矩形的宽度。
        h - 像素矩形的高度。
        dArray - 输入双像素阵列。
        异常
        NullPointerException - 如果 NullPointerException为空。
        ArrayIndexOutOfBoundsException - 如果坐标不在边界,或者如果dArray太小,不能容纳输入。
      • setSample

        public void setSample​(int x,
                              int y,
                              int b,
                              int s)
        使用int作为输入,为DataBuffer中位于(x,y)处的像素的指定波段设置一个样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        b - 乐队设置。
        s - 输入样本。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • setSample

        public void setSample​(int x,
                              int y,
                              int b,
                              float s)
        使用浮点数为DataBuffer设置位于(x,y)处的像素的指定波段的样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        b - 乐队设置。
        s - 输入样本为浮点数。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • setSample

        public void setSample​(int x,
                              int y,
                              int b,
                              double s)
        对于位于DataBuffer中(x,y)处的像素的指定带中的样本,使用双倍的输入。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 像素位置的X坐标。
        y - 像素位置的Y坐标。
        b - 乐队设置。
        s - 输入样本为双倍。
        异常
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内。
      • setSamples

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

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

        public void setSamples​(int x,
                               int y,
                               int w,
                               int h,
                               int b,
                               double[] dArray)
        从包含每个数组元素一个样本的双阵列的像素的指定矩形中设置样本。 如果坐标不在边界内,则可能抛出ArrayIndexOutOfBoundsException。 但是,显式边界检查不能保证。
        参数
        x - 左上角像素位置的X坐标。
        y - 左上角像素位置的Y坐标。
        w - 像素矩形的宽度。
        h - 像素矩形的高度。
        b - 乐队设置。
        dArray - 输入双样本数组。
        异常
        NullPointerException - 如果 NullPointerException为空。
        ArrayIndexOutOfBoundsException - 如果坐标或频带索引不在边界内,或者如果dArray太小而不能容纳输入。