模块  java.desktop
软件包  java.awt.image

Class BufferedImage

    • 字段详细信息

      • TYPE_CUSTOM

        public static final int TYPE_CUSTOM
        图像类型无法识别,因此必须是自定义图像。 此类型仅用作getType()方法的返回值。
        另请参见:
        常数字段值
      • TYPE_INT_RGB

        public static final int TYPE_INT_RGB
        表示将8位RGB颜色分量打包为整数像素的图像。 该图像有DirectColorModel没有alpha。 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_INT_ARGB

        public static final int TYPE_INT_ARGB
        表示将8位RGBA颜色分量打包为整数像素的图像。 该图像有一个DirectColorModel与alpha。 该图像中的颜色数据被认为不与alpha预乘。 当此类型用作BufferedImage构造函数的imageType参数时,创建的映像与在JDK1.1和早期版本中创建的映像一致。
        另请参见:
        常数字段值
      • TYPE_INT_ARGB_PRE

        public static final int TYPE_INT_ARGB_PRE
        表示将8位RGBA颜色分量打包为整数像素的图像。 该图像有一个DirectColorModel alpha。 该图像中的颜色数据被认为是与alpha预乘的。
        另请参见:
        常数字段值
      • TYPE_INT_BGR

        public static final int TYPE_INT_BGR
        表示具有8位RGB颜色分量的图像,对应于Windows或Solaris样式的BGR颜色模型,蓝色,绿色和红色填充为整数像素。 没有阿尔法。 图片有DirectColorModel 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_3BYTE_BGR

        public static final int TYPE_3BYTE_BGR
        表示具有8位RGB颜色分量的图像,对应于Windows样式的BGR颜色模型,其中颜色为蓝色,绿色和红色,以3个字节存储。 没有阿尔法。 图片有ComponentColorModel 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_4BYTE_ABGR

        public static final int TYPE_4BYTE_ABGR
        表示具有8位RGBA颜色分量的图像,其中颜色为蓝色,绿色和红色,存储在3个字节和1个字节的alpha中。 该图像有一个ComponentColorModel alpha。 该图像中的颜色数据被认为不与alpha预乘。 字节数据在A,B,G,R的单个字节数组中从每个像素内的较低字节地址到较高字节地址交错。
        另请参见:
        常数字段值
      • TYPE_4BYTE_ABGR_PRE

        public static final int TYPE_4BYTE_ABGR_PRE
        表示具有8位RGBA颜色分量的图像,其中颜色为蓝色,绿色和红色,存储在3个字节和1个字节的alpha中。 该图像有一个ComponentColorModel alpha。 该图像中的颜色数据被认为是与alpha预乘的。 字节数据在A,B,G,R的单个字节数组中从每个像素内的较低字节地址到较高字节地址交错。
        另请参见:
        常数字段值
      • TYPE_USHORT_565_RGB

        public static final int TYPE_USHORT_565_RGB
        表示具有5-6-5 RGB颜色分量(5位红色,6位绿色,5位蓝色)且没有alpha的图像。 这张图片有DirectColorModel 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_USHORT_555_RGB

        public static final int TYPE_USHORT_555_RGB
        表示具有5-5-5 RGB颜色分量(5位红色,5位绿色,5位蓝色)且没有alpha的图像。 这张图片有DirectColorModel 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_BYTE_GRAY

        public static final int TYPE_BYTE_GRAY
        表示无索引的无符号字节灰度图像。 此图片的ComponentColorModel与CS_GRAY ColorSpace 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_USHORT_GRAY

        public static final int TYPE_USHORT_GRAY
        表示未签名的短灰度图像,非索引)。 此图片的ComponentColorModel与CS_GRAY ColorSpace 当具有非不透明alpha的数据存储在此类型的图像中时,必须将颜色数据调整为非预乘形式并丢弃alpha,如AlphaComposite文档中所述。
        另请参见:
        常数字段值
      • TYPE_BYTE_BINARY

        public static final int TYPE_BYTE_BINARY
        表示不透明的字节打包的1,2或4位图像。 该图像的IndexColorModel没有alpha。 当这种类型的被用作imageType参数传递给BufferedImage构造函数的imageType参数,但没有ColorModel参数,一个1比特的图像与一个创建IndexColorModel在默认两种颜色的sRGB ColorSpace {0,0,0}和: {255,255,255}。

        可以通过BufferedImage构造函数构造每像素2或4位的图像,该构造函数通过提供具有适当映射大小的ColorModel获取ColorModel参数。

        每像素8位的图像应使用图像类型TYPE_BYTE_INDEXEDTYPE_BYTE_GRAY具体取决于其ColorModel

        当颜色数据存储在此类型的图像中时,颜色图中最接近的颜色由IndexColorModel确定,并存储结果索引。 根据IndexColorModel色彩图中的颜色,可能会导致alpha或颜色分量的逼近和丢失。

        另请参见:
        常数字段值
      • TYPE_BYTE_INDEXED

        public static final int TYPE_BYTE_INDEXED
        表示索引的字节图像。 当这种类型的被用作imageType参数传递给BufferedImage构造函数的imageType参数,但没有ColorModel参数,一个IndexColorModel与和颜色从216-255其余部分的256色6/6/6颜色立方体调色板创建由默认sRGB ColorSpace中的灰度值填充。

        当颜色数据存储在此类型的图像中时,颜色图中最接近的颜色由IndexColorModel确定,并存储生成的索引。 根据IndexColorModel色彩映射中的颜色,可能会导致alpha或颜色分量的逼近和丢失。

        另请参见:
        常数字段值
    • 构造方法详细信息

      • BufferedImage

        public BufferedImage​(int width,                     int height,                     int imageType,                     IndexColorModel cm)
        构造一个预定义图像类型之一的BufferedImage :TYPE_BYTE_BINARY或TYPE_BYTE_INDEXED。

        如果图像类型为TYPE_BYTE_BINARY,则使用颜色模型中的条目数来确定图像是否应具有每像素1,2或4位。 如果颜色模型具有1或2个条目,则图像将具有每像素1位。 如果它有3个或4个条目,则每个像素具有2位的图像。 如果它具有5到16个条目,则图像将具有每像素4位。 否则,将抛出IllegalArgumentException。

        参数
        width - 创建图像的宽度
        height - 创建的图像的高度
        imageType - 创建的图像的类型
        cm - IndexColorModel创建的图像
        异常
        IllegalArgumentException - 如果imageType不是TYPE_BYTE_BINARY或TYPE_BYTE_INDEXED,或者imageType是TYPE_BYTE_BINARY且颜色映射的条目数超过16个。
        另请参见:
        TYPE_BYTE_BINARYTYPE_BYTE_INDEXED
      • BufferedImage

        public BufferedImage​(ColorModel cm,                     WritableRaster raster,                     boolean isRasterPremultiplied,                     Hashtable<?,​?> properties)
        构造一个新的BufferedImage具有指定ColorModelRaster 如果SampleModel中的Raster数量和类型与ColorModel表示其颜色和alpha分量所需的数量和类型不匹配,则抛出RasterFormatException 这种方法可以乘或除的颜色Raster通过阿尔法数据到匹配alphaPremultiplied状态在ColorModel 这个BufferedImage属性可以通过传递String/ObjectString Object
        参数
        cm - ColorModel获取新图像
        raster - Raster用于图像数据
        isRasterPremultiplied - 如果是 true ,则栅格中的数据已与alpha预乘。
        properties - HashtableString / Object对。
        异常
        RasterFormatException - 如果 SampleModel中的 Raster数量和类型与 ColorModel所需的数量和类型不匹配,则表示其颜色和alpha分量。
        IllegalArgumentException - 如果 rastercm不兼容
        另请参见:
        ColorModelRasterWritableRaster
    • 方法详细信息

      • getAlphaRaster

        public WritableRaster getAlphaRaster()
        返回WritableRaster表示BufferedImage对象的Alpha通道,其中ColorModel对象支持单独的空间Alpha通道,例如ComponentColorModelDirectColorModel 如果此图像中没有与ColorModel关联的Alpha通道,则返回null 此方法假设所有ColorModel比其他对象IndexColorModel ,如果ColorModel支持alpha,存在被存储为图像数据的最后一个频带的单独alpha通道。 如果图像使用查找表中具有alpha的IndexColorModel ,则此方法返回null因为没有空间离散的alpha通道。 此方法创建一个新的WritableRaster ,但共享数据数组。
        结果
        一个 WritableRasternull如果此 BufferedImage具有与其相关联的alpha通道 ColorModel
      • getRGB

        public int getRGB​(int x,                  int y)
        返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素。 如果此默认模型与图像ColorModel不匹配,则会发生颜色转换。 使用此方法时,返回数据中的每个颜色分量只有8位精度。

        如果坐标不在边界内,则可能抛出ArrayOutOfBoundsException 但是,不保证显式边界检查。

        参数
        x - 从中获取默认RGB颜色模型和sRGB颜色空间中的像素的像素的X坐标
        y - 从中获取默认RGB颜色模型和sRGB颜色空间中像素的像素的Y坐标
        结果
        默认RGB颜色模型中的整数像素和默认的sRGB颜色空间。
        另请参见:
        setRGB(int, int, int)setRGB(int, int, int, int, int[], int, int)
      • getRGB

        public int[] getRGB​(int startX,                    int startY,                    int w,                    int h,                    int[] rgbArray,                    int offset,                    int scansize)
        从图像数据的一部分返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素数组。 如果默认模型与图像ColorModel不匹配, ColorModel颜色转换。 使用此方法时,返回数据中的每个颜色分量只有8位精度。 使用图像中的指定坐标(x,y),可以通过以下方式访问ARGB像素:
          pixel   = rgbArray[offset + (y-startY)*scansize + (x-startX)]; 

        如果该区域不在边界内,则可能抛出ArrayOutOfBoundsException 但是,不保证显式边界检查。

        参数
        startX - 起始X坐标
        startY - 起始Y坐标
        w - 区域宽度
        h - 地区的高度
        rgbArray - 如果不是 null ,则在此处写入rgb像素
        offset - 偏移到 rgbArray
        scansize - 扫描线大步为 rgbArray
        结果
        RGB像素数组。
        另请参见:
        setRGB(int, int, int)setRGB(int, int, int, int, int[], int, int)
      • setRGB

        public void setRGB​(int x,                   int y,                   int rgb)
        将此BufferedImage的像素设置为指定的RGB值。 假设像素位于默认的RGB颜色模型TYPE_INT_ARGB和默认的sRGB颜色空间中。 对于具有IndexColorModel图像,选择具有最近颜色的索引。

        如果坐标不在边界内,则可能抛出ArrayOutOfBoundsException 但是,不保证显式边界检查。

        参数
        x - 要设置的像素的X坐标
        y - 要设置的像素的Y坐标
        rgb - RGB值
        另请参见:
        getRGB(int, int)getRGB(int, int, int, int, int[], int, int)
      • setRGB

        public void setRGB​(int startX,                   int startY,                   int w,                   int h,                   int[] rgbArray,                   int offset,                   int scansize)
        将默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素数组设置为图像数据的一部分。 如果默认模型与图像ColorModel不匹配, ColorModel颜色转换。 使用此方法时,返回数据中的每个颜色分量只有8位精度。 使用此图像中的指定坐标(x,y),可以通过以下方式访问ARGB像素:
          pixel   = rgbArray[offset + (y-startY)*scansize + (x-startX)]; 
        警告:不会发生抖动。

        如果该区域不在边界内,则可能抛出ArrayOutOfBoundsException 但是,不保证显式边界检查。

        参数
        startX - 起始X坐标
        startY - 起始Y坐标
        w - 该地区的宽度
        h - 该地区的高度
        rgbArray - rgb像素
        offset - 偏移到 rgbArray
        scansize - 扫描线大步为 rgbArray
        另请参见:
        getRGB(int, int)getRGB(int, int, int, int, int[], int, int)
      • getWidth

        public int getWidth()
        返回 BufferedImage的宽度。
        Specified by:
        getWidth在界面 RenderedImage
        结果
        这个宽度 BufferedImage
      • getHeight

        public int getHeight()
        返回 BufferedImage的高度。
        Specified by:
        getHeight接口 RenderedImage
        结果
        这个高度 BufferedImage
      • getProperty

        public Object getProperty​(String name,                          ImageObserver observer)
        按名称返回图像的属性。 各个属性名称由各种图像格式定义。 如果未为特定图像定义属性,则此方法返回UndefinedProperty字段。 如果尚未知道此图像的属性,则此方法返回nullImageObserver会通知ImageObserver对象。 属性名称“comment”应该用于存储可选的注释,该注释可以作为图像,其源或作者的描述呈现给用户。
        Specified by:
        getPropertyImage
        参数
        name - 房产名称
        observer - 接收有关图像信息的通知的 ImageObserver
        结果
        Object ,如果此图像的属性name null则为指定的namenull的属性。
        异常
        NullPointerException - 如果属性名称为null。
        另请参见:
        ImageObserverImage.UndefinedProperty
      • createGraphics

        public Graphics2D createGraphics()
        创建一个 Graphics2D ,可用于绘制此 BufferedImage
        结果
        a Graphics2D ,用于绘制到这个图像。
      • getSubimage

        public BufferedImage getSubimage​(int x,                                 int y,                                 int w,                                 int h)
        返回由指定矩形区域定义的子图像。 返回的BufferedImage与原始映像共享相同的数据数组。
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        BufferedImage是这个 BufferedImage的子图像。
        异常
        RasterFormatException - 如果指定的区域未包含在此 BufferedImage
      • isAlphaPremultiplied

        public boolean isAlphaPremultiplied()
        返回alpha是否已被预乘。 如果没有alpha,则返回false
        结果
        true如果alpha已被预乘; 否则为false
      • coerceData

        public void coerceData​(boolean isAlphaPremultiplied)
        强制数据与isAlphaPremultiplied变量中指定的状态匹配。 它可以将颜色栅格数据乘以或除以alpha,或者如果数据处于正确状态则不执行任何操作。
        参数
        isAlphaPremultiplied - true如果alpha已被预乘; 否则为false
      • toString

        public String toString()
        返回此 BufferedImage对象及其值的 String表示形式。
        重写:
        toStringObject
        结果
        String代表这个 BufferedImage
      • getSources

        public Vector<RenderedImage> getSources()
        返回VectorRenderedImage对象,这些对象是此BufferedImage的图像数据的直接来源,而不是这些直接来源的来源。 如果BufferedImage没有关于其直接来源的信息,则此方法返回null 如果BufferedImage没有直接来源,则返回空Vector
        Specified by:
        getSources接口 RenderedImage
        结果
        一个 Vector包含此的直接来源 BufferedImage对象的图像的日期,或 null如果此 BufferedImage没有关于其直接来源,或空信息 Vector如果此 BufferedImage没有直接来源。
      • getPropertyNames

        public String[] getPropertyNames()
        如果未识别属性名称,则返回由 getProperty(String)null识别的名称数组。
        Specified by:
        getPropertyNames接口 RenderedImage
        结果
        包含getProperty(String)识别的所有属性名称的String数组; 如果没有识别出属性名称, null
      • getMinX

        public int getMinX()
        返回此BufferedImage的最小x坐标。 这始终为零。
        Specified by:
        getMinX接口 RenderedImage
        结果
        BufferedImage的最小x坐标。
      • getMinY

        public int getMinY()
        返回此BufferedImage的最小y坐标。 这始终为零。
        Specified by:
        getMinY在界面 RenderedImage
        结果
        BufferedImage的最小y坐标。
      • getSampleModel

        public SampleModel getSampleModel()
        返回 SampleModel与此相关 BufferedImage
        Specified by:
        getSampleModel在界面 RenderedImage
        结果
        SampleModel这个 BufferedImage
      • getNumXTiles

        public int getNumXTiles()
        返回x方向上的tile数。 这总是一个。
        Specified by:
        getNumXTiles接口 RenderedImage
        结果
        x方向上的瓦片数量。
      • getNumYTiles

        public int getNumYTiles()
        返回y方向上的tile数。 这总是一个。
        Specified by:
        getNumYTiles接口 RenderedImage
        结果
        y方向上的瓦片数量。
      • getMinTileX

        public int getMinTileX()
        返回x方向上的最小tile索引。 这始终为零。
        Specified by:
        getMinTileX在界面 RenderedImage
        结果
        x方向上的最小tile索引。
      • getMinTileY

        public int getMinTileY()
        返回y方向上的最小tile索引。 这始终为零。
        Specified by:
        getMinTileY接口 RenderedImage
        结果
        y方向上的最小tile索引。
      • getTileWidth

        public int getTileWidth()
        返回tile宽度(以像素为单位)。
        Specified by:
        getTileWidth在接口 RenderedImage
        结果
        平铺宽度(以像素为单位)
      • getTileHeight

        public int getTileHeight()
        返回tile高度(以像素为单位)。
        Specified by:
        getTileHeight接口 RenderedImage
        结果
        平铺高度(以像素为单位)
      • getTileGridXOffset

        public int getTileGridXOffset()
        返回tile网格相对于原点的x偏移量,例如tile(0,0)位置的x坐标。 这始终为零。
        Specified by:
        getTileGridXOffset在界面 RenderedImage
        结果
        图块网格的x偏移量。
      • getTileGridYOffset

        public int getTileGridYOffset()
        返回tile网格相对于原点的y偏移量,例如tile(0,0)位置的y坐标。 这始终为零。
        Specified by:
        getTileGridYOffset在界面 RenderedImage
        结果
        tile网格的y偏移量。
      • getTile

        public Raster getTile​(int tileX,                      int tileY)
        返回瓦( tileXtileY )。 请注意, tileXtileY是tile数组的索引,而不是像素位置。 返回的Raster是实时的,这意味着如果图像被更改,它将被更新。
        Specified by:
        getTile接口 RenderedImage
        参数
        tileX - tile数组中请求的tile的x索引
        tileY - 切片阵列中请求的切片的y索引
        结果
        Raster ,它是由参数 tileXtileY定义的 tileX tileY
        异常
        ArrayIndexOutOfBoundsException - 如果 tileXtileY均不等于0
      • getData

        public Raster getData()
        将图像作为一个大图块返回。 如果图像被更改, Raster返回的Raster是图像数据的副本未更新。
        Specified by:
        getData在接口 RenderedImage
        结果
        a Raster ,它是图像数据的副本。
        另请参见:
        setData(Raster)
      • getData

        public Raster getData​(Rectangle rect)
        计算并返回BufferedImage的任意区域。 返回的Raster是图像数据的副本,如果图像已更改,则不会更新。
        Specified by:
        getData在界面 RenderedImage
        参数
        rect - 待返回的地区 BufferedImage
        结果
        a Raster ,它是 Raster指定区域的图像数据的 BufferedImage
        另请参见:
        setData(Raster)
      • copyData

        public WritableRaster copyData​(WritableRaster outRaster)
        计算BufferedImage的任意矩形区域并将其复制到指定的WritableRaster 要计算的区域由指定的WritableRaster的边界确定。 指定的WritableRaster必须具有与此映像兼容的SampleModel 如果outRasternull ,则创建适当的WritableRaster
        Specified by:
        copyData接口 RenderedImage
        参数
        outRaster -一个 WritableRaster保存图像返回部分,或 null
        结果
        对提供或创建的 WritableRaster
      • setData

        public void setData​(Raster r)
        将图像的矩形区域设置为指定的Raster r的内容,假定其与BufferedImage位于相同的坐标空间中。 该操作被剪切到BufferedImage的边界。
        Specified by:
        setData在界面 WritableRenderedImage
        参数
        r - 指定的 Raster
        另请参见:
        getData()getData(Rectangle)
      • removeTileObserver

        public void removeTileObserver​(TileObserver to)
        删除tile观察者。 如果观察员没有注册,则没有任何反应。 如果观察者已注册多个通知,则现在注册的通知少一个。
        Specified by:
        removeTileObserver在界面 WritableRenderedImage
        参数
        to - 指定的 TileObserver
      • isTileWritable

        public boolean isTileWritable​(int tileX,                              int tileY)
        返回当前是否已检出tile以进行写入。
        Specified by:
        isTileWritable接口 WritableRenderedImage
        参数
        tileX - tileX的x索引。
        tileY - tileY的y索引。
        结果
        true如果指定索引指定的true贴已签出用于写入; 否则为false
        异常
        ArrayIndexOutOfBoundsException - 如果 tileXtileY都不等于0
      • getWritableTileIndices

        public Point[] getWritableTileIndices()
        返回一个Point对象的数组,指示要检出哪些切片以进行写入。 如果没有签出,则返回null
        Specified by:
        getWritableTileIndices接口 WritableRenderedImage
        结果
        一个 Point数组,用于指示已签出用于写入的 null如果没有 null出用于写入的切片, null
      • hasTileWriters

        public boolean hasTileWriters()
        返回是否签出任何图块以进行写入。 在语义上相当于
          (getWritableTileIndices() != null). 
        Specified by:
        hasTileWriters接口 WritableRenderedImage
        结果
        true如果有任何瓷砖被签出以供写入; 否则为false
      • getWritableTile

        public WritableRaster getWritableTile​(int tileX,                                      int tileY)
        检查一块瓷砖进行书写。 当一个TileObservers贴从没有编写器变为拥有一个写入器时,通知所有已注册的TileObservers
        Specified by:
        getWritableTile接口 WritableRenderedImage
        参数
        tileX - tileX的x索引
        tileY - tileY的y索引
        结果
        一个 WritableRaster ,它是由指定索引指示的 WritableRaster贴,用于检出以进行写入。
      • releaseWritableTile

        public void releaseWritableTile​(int tileX,                                int tileY)
        放弃写入磁贴的权限。 如果调用者继续写入磁贴,则结果未定义。 对此方法的调用应仅出现在调用getWritableTile(int, int)匹配对中。 任何其他导致未定义的结果。 当一个TileObservers贴从一个写入器变为没有写入器时,所有已注册的TileObservers收到通知。
        Specified by:
        releaseWritableTile在界面 WritableRenderedImage
        参数
        tileX - tileX的x索引
        tileY - tileY的y索引