精华内容
下载资源
问答
  • BufferedImage

    2020-04-24 17:31:33
    Java BufferedImage的基本用法: 1:读取本地图片:        File file = new File(”001.jpg“);//本地图片        BufferedImage image=...

    Java BufferedImage的基本用法:

    1:读取本地图片:
           File file = new File(”001.jpg“);//本地图片

           BufferedImage image=(BufferedImage)ImageIO.read(file);

    2:读取一张网上图片:

          URL url= new URL(”http://*******“);//url 为图片的URL 地址

         BufferedImage image=(BufferedImage)ImageIO.read(url);

    3:获取图片的每个像素点的像素值(获取个点像素值是后期图片操作的基础):

         //获取图像的宽度和高度
         int width = bi.getWidth();
         int height = bi.getHeight();
         int [] pot = new int[width*height];
        
         int k=0;
         for(int i=0;i<height;i++){
           for(int j=0;j<width;j++){//行扫描
            pot[k] = bi.getRGB(j, i);
              k++;
          System.out.println(pot[i]);
        }

    4:计算图片保存后的大小:

        要计算图片保存时的大小,一种简单的方法就是计算图片的输出刘的大小;将输出流转为 一个 byte 数组;然后计算数组的长度:

       image=(BufferedImage)ImageIO.read(url);
      ByteArrayOutputStream out =new ByteArrayOutputStream();
       ImageIO.write(image,“png”,out);//png 为要保存的图片格式
      byte[] barray = out.toByteArray();

      out.close();

    System.out.println(barray.length)

     

    展开全文
  • BufferedImage 学习

    2021-02-07 11:01:15
    一、BufferedImage介绍 image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便...

    一、BufferedImage介绍

    image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便地操作这个图片),提供获得绘图对象、图像缩放、选择图像平滑度等功能,通常用来做图片大小变换、图片变灰、设置透明不透明等。

    二、BufferedImage继承关系

    在这里插入图片描述

    三、BufferedImage的组成

    BufferedImage对象中最重要的两个组件是Raster与ColorModel,分别用于存储图像的像素数据和颜色数据。

    图像像素的存储

    图像的是以像素的形式存储在计算机中的,而像素在计算机中又以二进制表示。像素的存储空间取决于像素深度。

    像素深度是指存储每个像素所用的位数,也用它来度量图像的分辨率。像素深度决定彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。如果只有两种颜色黑和白,一个像素用二进制的0或1表示。如果颜色是8位灰度图像,每个像素用一个8位二进制表示。在RGB模式中,一个像素相当于3个字节。

    Raster对象的作用与像素存储

    BufferedImage对象使用Raster来存储像素数组。Raster对象自己使用两个对象来存储像素,一个是DataBuffer,另一个是SampleModel。DataBuffer为Raster存储像素,SampleModel描述如何在DataBuffer定位给定样本值。

    BufferedImage支持从Raster对象中获取任意位置(x,y)点的像素值p(x,y)

    image.getRaster().getDataElements(x,y,width,height,pixels)
    

    x,y表示开始的像素点,width和height表示像素数据的宽度和高度,pixels数组用来存放获取到的像素数据,image是一个BufferedImage的实例化引用。

    图像类型与ColorModel

    ColorModel用来存储像素的颜色值,ColorModel}抽象类封装了将像素值转换为颜色分量的方法(例如,红色、绿色和蓝色)和alpha分量。为了将图像呈现给屏幕、打印机或其他设备中,像素值必须转换为颜色和alpha分量。

    java.awt.image包提供了4种颜色模型:

    • PackedColorModel—一个抽象的ColorModel,表现其颜色成分直接嵌入成为该整数像素的数据位的像素值。DirectColorModel是PackedColorModel的子类。
    • DirectColorModel— 一个ColorModel可以表现含有RGB颜色成分,并且其颜色成分直接嵌入作为该像素自身数据位的像素。DirectColorModel模型的观感与X11 TrueColor相似。
    • ComponentColorModel—ColorModel可以处理任意的ColorSpace以及由颜色成分构成的、与ColorSpace相匹配的数组。
    • IndexColorModel—一个ColorModel,所表现的像素值是一个sRGB颜色空间的固定颜色表的索引。

    IndexColorModel的构造函数有五个参数:分别为
    1)Bits:表示每个像素所占的位数,对RGB来说是8位
    2)Size:表示颜色组件数组长度,对应RGB取值范围为0~255,值为256
    3)r[]:字节数组r表示颜色组件的RED值数组
    4)g[]:字节数组g表示颜色组件的GREEN值数组
    5)b[]:字节数组b表示颜色组件的BLUE值数组

    四、BufferedImage的操作

    Java将一副图片加载到内存中的方法

    BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath));
    

    远程图片转BufferedImage

    /**
         * 远程图片转BufferedImage
         * @param destUrl    远程图片地址
         * @return
         */
        public static BufferedImage getBufferedImageDestUrl(String destUrl) {
            HttpURLConnection conn = null;
            BufferedImage image = null;
            try {
                URL url = new URL(destUrl);
                conn = (HttpURLConnection) url.openConnection();
                if (conn.getResponseCode() == 200) {
                    image = ImageIO.read(conn.getInputStream());
                    return image;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                conn.disconnect();
            }
            return image;
        }
    

    写图像文件的代码

    File outputfile = new File("saved.png");
    ImageIO.write(bufferedImage, "png",outputfile);
    

    创建一个全新的BufferedImage对象,直接调用BufferedImage的构造函数

    BufferedImage  bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY)
    //其中width表示图像的宽度,height表示图像的高度,最后一个参数表示图像字节灰度图像
    

    根据已经存在的BufferedImage对象来创建一个相同的copy体

    public BufferedImage createBufferedImage(BufferedImage src){
    
      ColorModel  cm = src.getColorModel();
    
      BufferedImage image = new BufferedImage(cm,
    
          cm.creatCompatibleWritableRaster(
    
          src.getWidth(),
    
          src.getHeight()),
    
          cm.isAlphaPremultiplied(), null);
    
      return image;
    
    }
    

    实现图片拼接

    /**
         * 待合并的两张图必须满足这样的前提,如果水平方向合并,则高度必须相等;如果是垂直方向合并,宽度必须相等。
         * mergeImage方法不做判断,自己判断。      * @param img1 待合并的第一张图
         * @param img2 带合并的第二张图
         * @param isHorizontal 为true时表示水平方向合并,为false时表示垂直方向合并
         * @return 返回合并后的BufferedImage对象
         * @throws IOException
         */
        public static BufferedImage mergeImage(BufferedImage img1,
                BufferedImage img2, boolean isHorizontal) throws IOException {
            int w1 = img1.getWidth();
            int h1 = img1.getHeight();
            int w2 = img2.getWidth();
            int h2 = img2.getHeight();
    
            // 从图片中读取RGB
            int[] ImageArrayOne = new int[w1 * h1];
            ImageArrayOne = img1.getRGB(0, 0, w1, h1, ImageArrayOne, 0, w1); // 逐行扫描图像中各个像素的RGB到数组中
            int[] ImageArrayTwo = new int[w2 * h2];
            ImageArrayTwo = img2.getRGB(0, 0, w2, h2, ImageArrayTwo, 0, w2);
    
            // 生成新图片
            BufferedImage DestImage = null;
            if (isHorizontal) { // 水平方向合并
                DestImage = new BufferedImage(w1+w2, h1, BufferedImage.TYPE_INT_RGB);
                DestImage.setRGB(0, 0, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
                DestImage.setRGB(w1, 0, w2, h2, ImageArrayTwo, 0, w2);
            } else { // 垂直方向合并
                DestImage = new BufferedImage(w1, h1 + h2, BufferedImage.TYPE_INT_RGB);
                DestImage.setRGB(0, 0, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
                DestImage.setRGB(0, h1, w2, h2, ImageArrayTwo, 0, w2); // 设置下半部分的RGB
            }
    
            return DestImage;
        }
    
    展开全文
  • BufferedImage

    2018-05-06 20:14:00
    BufferedImage java.lang.Object继承 java.awt.Image中 java.awt.image.BufferedImage中 所有实现的接口:RenderedImage,WritableRenderedImage,Transparency 公共类...
    • 所有实现的接口:
      RenderedImageWritableRenderedImageTransparency


      公共类BufferedImage 
      扩展Image 
      实现WritableRenderedImageTransparency
      BufferedImage子类描述了一个Image具有可访问的图像数据缓冲区。A BufferedImage由一个ColorModel和一个 Raster图像数据组成。在数量和类型的带SampleModel的 Raster必须由所要求的数量和类型相匹配 ColorModel,以表示其颜色和alpha分量。所有BufferedImage对象的左上角坐标为(0,0)。因此Raster用于构造a的 任何BufferedImage必须具有minX = 0和minY = 0。

      这个类依赖于数据的获取和设置方法Raster,以及颜色表征方法ColorModel

      也可以看看:
      ColorModel, Raster, WritableRaster
      • 字段细节

        • TYPE_CUSTOM

          公共静态最终诠释TYPE_CUSTOM
          图像类型无法识别,因此它必须是自定义图像。此类型仅用作getType()方法的返回值。
          也可以看看:
          常量字段值
        • TYPE_INT_RGB

          公共静态最终诠释TYPE_INT_RGB
          表示8位RGB颜色分量打包成整数像素的图像。图像有一个DirectColorModel没有阿尔法。当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_INT_ARGB

          公共静态最终诠释TYPE_INT_ARGB
          表示8位RGBA颜色分量打包成整数像素的图像。图像有一个DirectColorModel 与阿尔法。该图像中的颜色数据被认为不是预乘alpha。当此类型用作 构造函数的 imageType参数时BufferedImage,创建的图像与在JDK1.1及更早版本中创建的图像一致。
          也可以看看:
          常量字段值
        • TYPE_INT_ARGB_PRE

          public static final int TYPE_INT_ARGB_PRE
          表示8位RGBA颜色分量打包成整数像素的图像。图像有一个DirectColorModel 与阿尔法。该图像中的颜色数据被认为是预乘alpha。
          也可以看看:
          常量字段值
        • TYPE_INT_BGR

          公共静态最终诠释TYPE_INT_BGR
          表示具有8位RGB颜色组件的图像,对应于Windows或Solaris风格的BGR颜色模型,蓝色,绿色和红色包装为整数像素。没有阿尔法。该图像有一个DirectColorModel当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_3BYTE_BGR

          公共静态最终诠释TYPE_3BYTE_BGR
          表示具有8位RGB颜色分量的图像,对应于Windows风格的BGR颜色模型),其颜色为蓝色,绿色和红色,存储为3个字节。没有阿尔法。该图像有一个 ComponentColorModel当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_4BYTE_ABGR

          公共静态最终诠释TYPE_4BYTE_ABGR
          表示具有8位RGBA颜色组件的图像,其颜色为蓝色,绿色和红色,以3字节和1字节的alpha存储。图像有一个ComponentColorModel与阿尔法。该图像中的颜色数据被认为不是预乘alpha。字节数据按每个像素内从低位到高位字节地址的顺序A,B,G,R以单个字节阵列交错。
          也可以看看:
          常量字段值
        • TYPE_4BYTE_ABGR_PRE

          公共静态最终诠释TYPE_4BYTE_ABGR_PRE
          表示具有8位RGBA颜色组件的图像,其颜色为蓝色,绿色和红色,以3字节和1字节的alpha存储。图像有一个ComponentColorModel与阿尔法。该图像中的颜色数据被认为是预乘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

          公共静态最终诠释TYPE_USHORT_555_RGB
          代表具有5-5-5 RGB颜色分量(5位红色,5位绿色,5位蓝色)且不含阿尔法的图像。这个图像有一个DirectColorModel当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_BYTE_GRAY

          公共静态最终诠释TYPE_BYTE_GRAY
          表示未经过索引的无符号字节灰度图像。这张图片有ComponentColorModel一个CS_GRAY ColorSpace当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_USHORT_GRAY

          公共静态最终诠释TYPE_USHORT_GRAY
          表示未经过编码的短灰度图像,未编制索引)。这张图片有ComponentColorModel一个CS_GRAY ColorSpace当具有非透明alpha的数据存储在此类图像中时,必须将颜色数据调整为非预乘形式,并丢弃alpha,如AlphaComposite文档中所述 
          也可以看看:
          常量字段值
        • TYPE_BYTE_BINARY

          公共静态最终诠释TYPE_BYTE_BINARY
          表示一个不透明的字节打包的1,2或4位图像。图像有一个IndexColorModel没有阿尔法。当此类型用作接受参数但不带 参数imageType的 BufferedImage构造 imageType函数的ColorModel参数时,将IndexColorModel使用默认sRGB中的两种颜色创建1位图像 ColorSpace:{0,0,0}和{255,255,255 }。

          每像素2或4位的图像可以通过构造函数来BufferedImage构造,构造ColorModel函数通过提供ColorModel具有适当的地图尺寸参数来构造 参数 

          每像素8位的图像应该使用图像类型TYPE_BYTE_INDEXEDTYPE_BYTE_GRAY 根据其类型 ColorModel

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

          也可以看看:
          常量字段值
        • TYPE_BYTE_INDEXED

          公共静态最终诠释TYPE_BYTE_INDEXED
          表示索引字节图像。当这个类型被用作 带有参数但没有参数imageTypeBufferedImage构造imageType函数的ColorModel参数时, IndexColorModel用256色6/6/6彩色立方体调色板创建一个,其余的颜色从216-255填充到灰度值中默认的sRGB ColorSpace。

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

          也可以看看:
          常量字段值
      • 构造函数的细节

        • 的BufferedImage

          public BufferedImage(int width,
                       int高度,
                       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 - 创建的图像的类型
          cmIndexColorModel创建的图像
          抛出:
          IllegalArgumentException - 如果imageType不是TYPE_BYTE_BINARY或TYPE_BYTE_INDEXED,或者imageType是TYPE_BYTE_BINARY,并且颜色映射有超过16个条目。
          也可以看看:
          TYPE_BYTE_BINARY, TYPE_BYTE_INDEXED
        • 的BufferedImage

          公共BufferedImage(ColorModel  cm,
                        WritableRaster  栅格,
                       布尔isRasterPremultiplied,
                       散列表 <?,?>属性)
          BufferedImage用指定的 ColorModel构造一个新的Raster如果在数量和类型的带SampleModel的 Raster不匹配的数量和由所要求的类型的ColorModel表示其颜色和alpha分量,一个RasterFormatException被抛出。该方法可以将颜色Raster数据乘以或除以alpha以匹配中的alphaPremultiplied状态ColorModel属性 BufferedImage可以通过传入一HashtableStringObject 成对来建立
          参数:
          cmColorModel为新的图像
          rasterRaster用于图像数据
          isRasterPremultiplied- 如果true光栅中的数据已经预乘alpha。
          propertiesHashtable中 StringObject对。
          抛出:
          RasterFormatException-如果在数量和类型的带SampleModel的 Raster不匹配所要求的数量和类型ColorModel,以表示其颜色和alpha分量。
          IllegalArgumentException- 如果 raster不符合cm
          也可以看看:
          ColorModel, Raster, WritableRaster
      • 方法细节

        • getAlphaRaster

          public  WritableRaster  getAlphaRaster()
          返回一个WritableRaster表示BufferedImage具有ColorModel支持单独空间Alpha通道的对象(如ComponentColorModel和)的 alpha通道DirectColorModelnull如果没有与ColorModel此图像中的Alpha通道关联,则返回此方法假设,对于所有 ColorModel对象以外 IndexColorModel,如果ColorModel 支撑件α,存在被存储为图像数据的最后一个频带的单独alpha通道。如果图像使用IndexColorModel在查找表中具有alpha 的图像,则此方法返回, null因为没有空间离散的Alpha通道。此方法创建一个新的 WritableRaster,但共享数据数组。
          返回:
          WritableRaster或者null如果 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偏移量,
                     int scansize)
          从部分图像数据中返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素数组。如果默认模型与图像不匹配,则会进行颜色转换 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颜色空间。对于具有an的图像,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偏移量,
                    int scansize)
          将默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB颜色空间中的整数像素数组设置为图像数据的一部分。如果默认模型与图像不匹配,则会发生颜色转换 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
          指定者:
          getWidth 在界面中 RenderedImage
          返回:
          这个的宽度 BufferedImage
        • 的getHeight

          public int getHeight()
          返回。的高度BufferedImage
          指定者:
          getHeight 在界面中 RenderedImage
          返回:
          这个的高度 BufferedImage
        • 的getProperty

          public  Object  getProperty(String  name,
                            ImageObserver  observer)
          按名称返回图像的属性。各个属性名称由各种图像格式定义。如果没有为特定图像定义属性,则此方法返回该 UndefinedProperty字段。如果此图像的属性尚未知道,则此方法返回 null并在ImageObserver稍后通知对象。应该使用属性名称“comment”来存储可选评论,该评论可以作为图像,其来源或作者的描述呈现给用户。
          指定者:
          getProperty 在班上 Image
          参数:
          name - 属性名称
          observerImageObserver接收有关图像信息的通知
          返回:
          一个Object是由指定引用的属性namenull如果这个图像的性质尚不清楚。
          抛出:
          NullPointerException - 如果属性名称为空。
          也可以看看:
          ImageObserver, Image.UndefinedProperty
        • 的getProperty

          public  Object  getProperty(String  name)
          按名称返回图像的属性。
          指定者:
          getProperty 在界面中 RenderedImage
          参数:
          name - 属性名称
          返回:
          一个Object是称为由指定的属性name
          抛出:
          NullPointerException - 如果属性名称为空。
          也可以看看:
          Image.UndefinedProperty
        • 的createGraphics

          public  Graphics2D  createGraphics()
          创建一个Graphics2D,可以用来绘制这个BufferedImage
          返回:
          一个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是否已经预乘。false如果没有alpha,它会返回
          返回:
          true如果alpha已经预乘; false除此以外。
        • coerceData

          public void coerceData(boolean isAlphaPremultiplied)
          强制数据匹配isAlphaPremultiplied变量中指定的状态 它可以将颜色栅格数据乘以或除以alpha,或者如果数据处于正确的状态,则不做任何事情。
          参数:
          isAlphaPremultipliedtrue如果alpha已经预乘; false除此以外。
        •  

          public  String  toString()
          返回StringBufferedImage对象及其值表示形式 
          覆盖:
          toString 在班上 Object
          返回:
          一个String表示此 BufferedImage
        • getSources

          public  Vector < RenderedImage > getSources()
          为此返回一VectorRenderedImage对象,它们是图像数据的直接来源,而不是这些直接来源的来源BufferedImagenull如果BufferedImage 没有关于其直接来源的信息,返回此方法Vector如果BufferedImage没有直接来源,它将返回一个空白
          指定者:
          getSources 在界面中 RenderedImage
          返回:
          一个Vector包含此BufferedImage对象的图像日期的直接来源,或者null如果它BufferedImage没有关于其直接来源的信息,或者 如果它没有直接来源,Vector则为空 BufferedImage 。
        • getPropertyNames

          public  String [] getPropertyNames()
          返回由getProperty(String) or 识别的名称数组 null,如果没有识别属性名称。
          指定者:
          getPropertyNames 在界面中 RenderedImage
          返回:
          一个String包含所有可getProperty(String)识别的属性名称数组或者null如果没有识别属性名称。
        • getMinX

          public int getMinX()
          返回此的最小x坐标 BufferedImage这总是零。
          指定者:
          getMinX 在界面中 RenderedImage
          返回:
          这个的最小x坐标 BufferedImage
        • getMinY

          public int getMinY()
          返回此的最小y坐标 BufferedImage这总是零。
          指定者:
          getMinY 在界面中 RenderedImage
          返回:
          这个的最小y坐标 BufferedImage
        • getSampleModel

          public  SampleModel  getSampleModel()
          返回SampleModel与此关联的内容 BufferedImage
          指定者:
          getSampleModel 在界面中 RenderedImage
          返回:
          SampleModel这 BufferedImage
        • getNumXTiles

          public int getNumXTiles()
          返回x方向上的图块数量。这永远是一个。
          指定者:
          getNumXTiles 在界面中 RenderedImage
          返回:
          x方向上的瓦片数量。
        • getNumYTiles

          public int getNumYTiles()
          返回y方向上的图块数量。这永远是一个。
          指定者:
          getNumYTiles 在界面中 RenderedImage
          返回:
          y方向上的瓦片数量。
        • getMinTileX

          public int getMinTileX()
          返回x方向上的最小图块索引。这总是零。
          指定者:
          getMinTileX 在界面中 RenderedImage
          返回:
          x方向上的最小瓦片索引。
        • getMinTileY

          public int getMinTileY()
          返回y方向上的最小图块索引。这总是零。
          指定者:
          getMinTileY 在界面中 RenderedImage
          返回:
          y方向的最小瓦片索引。
        • getTileWidth

          public int getTileWidth()
          以像素为单位返回图块宽度。
          指定者:
          getTileWidth 在界面中 RenderedImage
          返回:
          瓦片宽度以像素为单位。
        • getTileHeight

          public int getTileHeight()
          以像素为单位返回平铺高度。
          指定者:
          getTileHeight 在界面中 RenderedImage
          返回:
          瓷砖高度以像素为单位。
        • getTileGridXOffset

          public int getTileGridXOffset()
          返回平铺网格相对于原点的x偏移量,例如平铺(0,0)位置的x坐标。这总是零。
          指定者:
          getTileGridXOffset 在界面中 RenderedImage
          返回:
          瓦片网格的x偏移量。
        • getTileGridYOffset

          public int getTileGridYOffset()
          返回tile网格相对于原点的y偏移量,例如tile(0,0)位置的y坐标。这总是零。
          指定者:
          getTileGridYOffset 在界面中 RenderedImage
          返回:
          tile网格的y偏移量。
        • getTile

          公共  栅格  getTile(int tileX,
                       int tileY)
          返回平铺(tileX,  tileY)。请注意,tileXtileY在索引放入瓦阵列,而不是像素位置。Raster 返回的是活的,这意味着如果图像改变,它被更新。
          指定者:
          getTile 在界面中 RenderedImage
          参数:
          tileX - 瓦片数组中所请求瓦片的x索引
          tileY - 瓦片阵列中请求的瓦片的y索引
          返回:
          一个Raster是由参数tileX参数定义的图块tileY
          抛出:
          ArrayIndexOutOfBoundsException-如果两个 tileXtileY不等于0
        • 的getData

          公共  栅格  getData()
          将图像作为一个大图块返回。Raster 返回的是如果图像改变时它不会更新的图像数据的副本。
          指定者:
          getData 在界面中 RenderedImage
          返回:
          一个Raster是图像数据的副本。
          也可以看看:
          setData(Raster)
        • 的getData

          公共  栅格  getData(矩形  矩形)
          计算并返回一个任意的区域 BufferedImageRaster返回的是图像数据的副本,如果图像改变时它不会更新。
          指定者:
          getData 在界面中 RenderedImage
          参数:
          rectBufferedImage要返回的区域
          返回:
          一个Raster是指定区域的图像数据的副本BufferedImage
          也可以看看:
          setData(Raster)
        • 了CopyData

          公共  WritableRaster  copyData(WritableRaster  outRaster)
          计算任意的矩形区域 BufferedImage并将其复制到指定的区域 WritableRaster要计算的区域是从指定的边界确定的 WritableRaster指定的 WritableRaster必须具有 SampleModel与此图像兼容的图像。如果 outRasternullWritableRaster创建一个适当的。
          指定者:
          copyData 在界面中 RenderedImage
          参数:
          outRaster- a WritableRaster保存图像的返回部分,或null
          返回:
          对提供或创建的引用 WritableRaster
        • 使用setData

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

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

          公共布尔isTileWritable(int tileX,
                               int tileY)
          返回平铺当前是否签出写入。
          指定者:
          isTileWritable 在界面中 WritableRenderedImage
          参数:
          tileX - 瓦片的x索引。
          tileY - 瓦片的y索引。
          返回:
          true如果由指定索引指定的图块检出写入; false 除此以外。
          抛出:
          ArrayIndexOutOfBoundsException-如果两个 tileXtileY不等于0
        • getWritableTileIndices

          public  Point [] getWritableTileIndices()
          返回一个Point对象数组,指示检出哪些图块用于写入。null如果没有签出,则返回
          指定者:
          getWritableTileIndices 在界面中 WritableRenderedImage
          返回:
          一个Point数组,用于指示检出写入的null图块,或者没有检出图块进行写入。
        • hasTileWriters

          public boolean hasTileWriters()
          返回是否检出任何图块进行写入。语义上等同于
           (getWritableTileIndices()!= null)。
           
          指定者:
          hasTileWriters 在界面中 WritableRenderedImage
          返回:
          true如果任何磁贴检出写入; false除此以外。
        • getWritableTile

          公共  WritableRaster  getWritableTile(int tileX,
                                       int tileY)
          检查一个瓷砖的写作。TileObservers当瓷砖从没有作家到有一个作家时,所有注册的 人都会收到通知。
          指定者:
          getWritableTile 在界面中 WritableRenderedImage
          参数:
          tileX - 瓦片的x索引
          tileY - 瓦片的y索引
          返回:
          一个WritableRaster是由指定索引指示的瓦片将被检出写入。
        • releaseWritableTile

          public void releaseWritableTile(int tileX,
                                 int tileY)
          放弃写入瓦片的权限。如果调用者继续写入瓦片,结果是不确定的。对此方法的调用应该只会出现在与调用相匹配的对中getWritableTile(int, int)任何其他导致未定义的结果。所有注册的TileObservers 人都会在有一位作家从没有作家的情况下得到通知。
          指定者:
          releaseWritableTile 在界面中 WritableRenderedImage
          参数:
          tileX - 瓦片的x索引
          tileY - 瓦片的y索引

    转载于:https://www.cnblogs.com/chenhonggao/p/8999447.html

    展开全文
  • BufferedImage对象

    2019-03-01 14:53:21
    BufferedImage对象中最重要的两个组件是Raster与ColorModel,分别用于存储图像的像素数据和颜色数据。 1、Raster对象的作用与像素存储 BufferedImage支持从Raster对象中获取任意位置(x,y)点的像素值p(x,y) image....

    BufferedImage对象中最重要的两个组件是Raster与ColorModel,分别用于存储图像的像素数据和颜色数据。

    1、Raster对象的作用与像素存储

    BufferedImage支持从Raster对象中获取任意位置(x,y)点的像素值p(x,y)

    image.getRaster().getDataElements(x,y,width,height,pixels)

    x,y表示开始的像素点,width和height表示像素数据的宽度和高度,pixels数组用来存放获取到的像素数据,image是一个BufferedImage的实例化引用。

    2、图像类型与ColorModel

    其实现类为IndexColorModel,IndexColorModel的构造函数有五个参数:分别为

    Bits:表示每个像素所占的位数,对RGB来说是8位

    Size:表示颜色组件数组长度,对应RGB取值范围为0~255,值为256

    r[]:字节数组r表示颜色组件的RED值数组

    g[]:字节数组g表示颜色组件的GREEN值数组

    b[]:字节数组b表示颜色组件的BLUE值数组

    3、BufferedImage对象的创建与保存

    (1)创建一个全新的BufferedImage对象,直接调用BufferedImage的构造函数

    BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY)

    其中width表示图像的宽度,height表示图像的高度,最后一个参数表示图像字节灰度图像

    (2)根据已经存在的BufferedImage对象来创建一个相同的copy体

    public BufferedImage createBufferedImage(BufferedImage src){

    ColorModel cm = src.getColorModel();

    BufferedImage image = new BufferedImage(cm,

    cm.creatCompatibleWritableRaster(

    src.getWidth(),

    src.getHeight()),

    cm.isAlphaPremultiplied(), null);

    return image;

    }

    (3)通过创建ColorModel 和Raster对象实现BufferedImage 对象的实例化

    public BufferedImage createBufferedImage(int width , int height, byte[] pixels){

    ColorModel cm = getColorModel();

    SampleModel sm = getIndexSampleModel((IndexColorModel)cm, width,height);

    DataBuffer db = new DataBufferByte(pixels, width*height,0);

    WritableRaster raster = Raster.creatWritableRaster(sm, db,null);

    BufferedImage image = new BufferedImage (cm, raster,false, null);

    return image;

    }

    (4)读取一个图像文件

    public BufferedImage readImageFile(File file)

    {

    try{

    BufferedImage image = ImageIo.read(file);

    return image;

    }catch(IOException e){

    e.printStrackTrace();

    }

    return null;

    }

    (5)保存BufferedImage 对象为图像文件

    public void writeImageFile(BufferedImage bi) throws IOException{

    File outputfile = new File(“save.png”);

    ImageIO.write(bi,“png”,outputfile);

    }

    转载
    文章出自:https://www.cnblogs.com/bigdream6/p/8366248.html

    展开全文
  • java BufferedImage转MultipartFile

    千次阅读 多人点赞 2020-12-22 14:03:00
    java生成二维码返回BufferedImage对象,需要转成MultipartFile进行文件上传。 转换流程:BufferedImage → InputStream →MultipartFile //得到BufferedImage对象 BufferedImage bufferedImage = JoinTwoImage....
  • m rewriting critical part of image processing from BufferedImage to pngj. However I prefer to leave BufferedImage in some image-processing parts of program. <p>I have the following flow: 1. Load ...
  • 1.用到的包public static voidmain(String[] args) {//TODO Auto-generated method stubint width = 100;...创建一个不带透明色的BufferedImage对象BufferedImage bimage= newBufferedImage(width, height, Buffer...
  • 1.用到的包public static voidmain(String[] args) {//TODO Auto-generated method stubint width = 100;...创建一个不带透明色的BufferedImage对象BufferedImage bimage= newBufferedImage(width, height, Buffer...
  • 我有以下代码,它创建灰度BufferedImage,然后设置每个像素的随机颜色.import java.awt.image.BufferedImage;public class Main {public static void main(String[] args) {BufferedImage right = new BufferedImage...
  • public static BufferedImage iplToBufImgData(IplImage ipl,BufferedImage image ) public static IplImage BufImgToIplData(IplImage ipl,BufferedImage bi)
  • BufferedImage转Base64

    万次阅读 2019-10-21 15:00:29
    通过获取的文件路径,可以将bufferedImage转成base64来输出 public static String getBase64(String path){ File file = new File(path); String base64 = null; try { BufferedImage image = ImageIO....
  • 一、需要用到的类java.awt.image.BufferedImage;javax.imageio.ImageIO;java.io.*;二、为什么要将BufferedImage转为byte数组在传输中,图片是不能直接传的,因此需要把图片变为字节数组,然后传输比较方便;只需要...
  • Java 通过BufferedImage缩放和裁剪图片

    千次阅读 2020-05-11 11:10:18
    通过BufferedImage对图片进行缩放和裁剪 读取图片 //读取图片 通过JAVA自带的ImageIO里面的read方法 BufferedImage bufImage = ImageIO.read(File input); BufferedImage bufImage = ImageIO.read(URL input); ...
  • BufferedImage类、Image类、Graphics类

    万次阅读 多人点赞 2019-04-29 11:08:12
    BufferedImage Image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便地操作...
  • BufferedImage 基本用法

    千次阅读 2019-10-21 11:45:13
    1:读取本地图片: File file = new File(”001.jpg“)...BufferedImage image=(BufferedImage)ImageIO.read(file); 2:读取一张网上图片: URL url= new URL(”http://*******“);//url为图片的URL 地址 Bu...
  • 序本文主要简述一下如何使用BufferedImage进行渐变色操作。GradientPaintjava/awt/GradientPaint.javapublic class GradientPaint implements Paint {Point2D.Float p1;Point2D.Float p2;Color color1;Color color2;...
  • 关于BufferedImage的处理

    2019-11-07 11:37:32
    RenderedImage转BufferedImage public BufferedImage convertRenderedImage(RenderedImage img) { if (img instanceof BufferedImage) { return (BufferedImage) img; } ColorM...
  • BufferedImage的创建与保存

    万次阅读 2018-07-24 23:29:44
    BufferedImage的创建与保存
  • package ...import java.awt.Graphics;import java.awt.Image;import java.awt.Label;import java.awt.MediaTracker;import java.awt.Toolkit;import java.awt.image.BufferedImage;import jav...
  • BufferedImage释放问题

    2020-07-31 14:41:25
    BufferedImage b1 = new … 使用完后: b1 = null 这样,JVM 就会知道 b1 的内存可以回收了。 当 jvm 知道 b1 = null 的时候,需要等到 jvm 本身运行 System.gc() 的时候,才会真正对 b1 产生出的内存进行回收。 ...
  • BufferedImage bufferedImage = new BufferedImage(xxx); ImageView imageView = new ImageView(); Image image = bufferedImage; //Error Image image = SwingFXUtils.toFXImage(bufferedImage, null); ...
  • public static BufferedImage resize(BufferedImage img, int newW, int newH) { Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH); BufferedImage dimg = new BufferedImage(newW, newH, ...
  • java 的 BufferedImage

    2020-09-05 17:22:49
    BufferedImage是Image的一个子类,Image和BufferedImage的主要作用就是将一副图片加载到内存中。 BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片...
  • SaveImage.java类提供以下保存图像的方法:static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException该教程解释了这一点BufferedImage类实现RenderedImage接口。...
  • importlombok.extern.slf4j.Slf4j;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjavax.imageio....importjava.awt.image.BufferedImage;importjava.io.BufferedInputStream;importjava.io...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,858
精华内容 3,943
热门标签
关键字:

bufferedimage