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);  

}

Java——BufferedImage对象的更多相关文章

  1. java中快速读写图片到BufferedImage对象

    java7读取文件到BufferedImage对象 BufferedImage bufferedImage = ImageIO.read(Files.newInputStream(Paths.get( ...

  2. Java——BufferedImage操作实例

    通过鼠标位置改变图像ColorModel对象索引,从而实现图像像素自动变化 BufferedImage 由图像数据的 ColorModel 和 Raster 组成.Raster 的 SampleMod ...

  3. 规则引擎集成接口(九)Java类对象

    Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...

  4. java类 对象 和构造方法

    github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...

  5. java integer对象判断两个数字是否相等

    java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...

  6. 转载---Java集合对象的深度复制与普通复制

    原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...

  7. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  8. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

随机推荐

  1. (十)C语言之putchar、getchar

  2. IDEA找回Run Dashboard

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  3. GitHub:IBM

    ylbtech-GitHub:IBM 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. https://github.com/ibm 2.   6.返回顶部 ...

  4. css的绝对布局问题,怎么让子元素置于底部?

    给子元素做定位.用position标签示例:<html><head><style type="text/css">p.pos_abs{posit ...

  5. Eclipse使用git发布项目到github

    因为一直都在使用svn,今天尝试了下git,记录下来既是方便自己以后查看,也是分享一些经验! 废话不多说,撸起袖子就是干!!! 1.选中要上传的项目右键 2.选中git 3.在图上打钩,点击所要上传的 ...

  6. Python——GUI编程(python programming)

    import sys from math import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidg ...

  7. vs code 设置 保存自动格式化vue代码

    配置 ESLint (需安装 Prettier - Code formatter 插件) command + shift + p  打开用户设置 // vscode默认启用了根据文件类型自动设置tab ...

  8. 乌班图18.04 LTS 版LAMP环境配置记录

    -- 2018.06.07 -- liujunhang lamp 环境包括:Apache服务器.php.Mysql数据库,linux服务器架构在虚拟机中.Tip:在进行环境配置之前最好进行镜像存储.1 ...

  9. 【HANA系列】SAP HANA SQL从给定日期中获取年份

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...

  10. 华为HCNA乱学Round 12:NAT和easy IP