博客
关于我
javaGUI学习15:AWT-无过滤图像处理
阅读量:328 次
发布时间:2019-03-04

本文共 5166 字,大约阅读时间需要 17 分钟。

1、Graphics

drawImage()的一些重载版

abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) //绘制与当前可用的指定图像一样多的指定区域,即时缩放它以适合目标可绘制表面的指定区域。  abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) //绘制与当前可用的指定图像一样多的指定区域,即时缩放它以适合目标可绘制表面的指定区域。  abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) //绘制已经缩放以适合指定矩形内部的指定图像。  abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) //绘制已经缩放以适合指定矩形内部的指定图像。  abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) //绘制尽可能多的指定图像。  abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) //绘制尽可能多的指定图像。

java.awt. Image提供返回其本身缩放表示的方法,结果就是想要得到的高速缓存图像。在该方法中,使用了三个整型参数:Image . getScaledInstance (int,int,int)。第一和第二个整型参数用来指明图像的宽度和高度,而第三个integer参数指明缩放图像的算法类型。

图像的缩放算法常量:

SCALE_DEFAULT //使用缺省的图像缩放算法SCALE_FAST //被缩放的图像的速度优先于平滑SCALE_SMOOTH //提高平滑优先于提高速度SCALE_REPLICATE //使用由ReplicateScaleFilter提供的算法SCALE_AVERAGING //使用由AreaAveragingScaleFilter提供的算法

2、抓取像素

PixelGrabber类:是在给定图像中抓取矩形区域中的像素的 ImageConsumer接口的一个实现。

构造方法:

PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize) //创建一个PixelGrabber对象,从指定的ImageProducer生成的图像中抓取(x,y,w,h)矩形像素部分到给定数组中。  PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB) //创建PixelGrabber对象以从指定图像中抓取(x,y,w,h)矩形像素部分。  PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize) //创建PixelGrabber对象以从指定图像中抓取(x,y,w,h)矩形像素部分到给定数组中。

方法:

void abortGrabbing() //请求PixelGrabber中止图像提取。  ColorModel getColorModel() //获取存储在数组中的像素的ColorModel。  int getHeight() //获取像素缓冲区的高度(调整图像高度后)。  Object getPixels() //获取像素缓冲区。  int getStatus() //返回像素的状态。  int getWidth() //获取像素缓冲区的宽度(调整图像宽度后)。  boolean grabPixels() //请求Image或ImageProducer开始提供像素,并等待感兴趣的矩形中的所有像素被传递。  boolean grabPixels(long ms) //请求Image或ImageProducer开始传送像素,并等待传递感兴趣的矩形中的所有像素,或者直到指定的超时时间结束。  void imageComplete(int status) //imageComplete方法是ImageConsumer API的一部分,此类必须实现它以检索像素。  void setColorModel(ColorModel model) //setColorModel方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。  void setDimensions(int width, int height) //setDimensions方法是ImageConsumer API的一部分,此类必须实现它才能检索像素。  void setHints(int hints) //setHints方法是ImageConsumer API的一部分,该类必须实现它才能检索像素void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan) //setPixels方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。 void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan) //setPixels方法是ImageConsumer API的一部分,该类必须实现它才能检索像素。void setProperties(Hashtable
props) //setProperties方法是ImageConsumer API的一部分,此类必须实现该API才能检索像素。 void startGrabbing() //请求PixelGrabber开始获取像素。 int status() //返回像素的状态。

3、内存图像源

Java.awt.image.MemoryImageSource实现 ImageProducer接口,并且可以从像素数组中生产图像的位,将像素数组转换为图像的基础结构。

构造方法:

MemoryImageSource(int w, int h, int[] pix, int off, int scan) //构造一个ImageProducer对象,该对象使用默认RGB ColorModel中的整数数组来为Image对象生成数据。  MemoryImageSource(int w, int h, int[] pix, int off, int scan, Hashtable
props) //构造一个ImageProducer对象,该对象使用默认RGB ColorModel中的整数数组来为Image对象生成数据。 MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan) //构造一个ImageProducer对象,该对象使用字节数组为Image对象生成数据。 MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable
props) //构造一个ImageProducer对象,该对象使用字节数组为Image对象生成数据。 MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan) //构造一个ImageProducer对象,该对象使用整数数组为Image对象生成数据。 MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable
props) //构造一个ImageProducer对象,该对象使用整数数组为Image对象生成数据。
  • 每种构造器的前两个参数都是用来指明图像的宽度和高度。所有的构造器获得一个bytes数组或integers 数组,用来生产图像,除此之外还传递偏移量和scansize。
  • 如果在构造器中没有传递颜色模式,则数组中的像素被假定存贮为RGB格式。构造器同时也提供指明图像属性散列表的变体,以得到更多的关于图像消费者属性的信息。

方法:

void addConsumer(ImageConsumer ic) //将ImageConsumer添加到对此图像的数据感兴趣的使用者列表中。 boolean isConsumer(ImageConsumer ic) //确定ImageConsumer是否位于当前对此图像的数据感兴趣的使用者列表中。  void newPixels() //向当前对此图像的数据感兴趣的任何ImageConsumers发送一个全新的像素缓冲区,并通知它们动画帧已完成。  void newPixels(byte[] newpix, ColorModel newmodel, int offset, int scansize) //更改新的字节数组以保存此图像的像素。  void newPixels(int[] newpix, ColorModel newmodel, int offset, int scansize) //更改为新的int数组以保存此图像的像素。  void newPixels(int x, int y, int w, int h) //将像素缓冲区的矩形区域发送到当前对此图像的数据感兴趣的任何ImageConsumers,并通知它们动画帧已完成。  void newPixels(int x, int y, int w, int h, boolean framenotify) //将像素缓冲区的矩形区域发送到当前对此图像的数据感兴趣的任何ImageConsumers。  void removeConsumer(ImageConsumer ic) //从对此图像的数据感兴趣的使用者列表中删除ImageConsumervoid requestTopDownLeftRightResend(ImageConsumer ic) //请求给定的ImageConsumer以自上而下,左右顺序再次传递图像数据。  void setAnimated(boolean animated) //根据动画参数将此内存图像更改为多帧动画或单帧静态图像。  void setFullBufferUpdates(boolean fullbuffers) //指定是否应始终通过在发生更改时发送完整的像素缓冲区来更新此动画内存图像。  void startProduction(ImageConsumer ic) //将ImageConsumer添加到对此图像的数据感兴趣的使用者列表中,并立即通过ImageConsumer界面开始传送图像数据。

4、使用MemoryImageSource裁剪图像,内存图像源和动画

就是使用上面两个类的方法的应用,自己琢磨。或者看《java2图形设计卷1:AWT》中的相关章节代码例子。

转载地址:http://lalq.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>