博客
关于我
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/

你可能感兴趣的文章
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>