java中BufferedImage图像有哪几种类型?

Python012

java中BufferedImage图像有哪几种类型?,第1张

Java的BufferedImage类是Image类的子类。属于一种类型,它是用来处理和操作的图像数据。

构造函数构造一个新BufferedImage一个具有指定ColorModel和Raster。

它计算的任意矩形区域BufferedImage并将其复制到指定的WritableRaster。

构造函数构造一个BufferedImage预定义图像类型之一,TYPE_BYTE_BINARY或TYPE_BYTE_INDEXED。

它返回默认RGB颜色模型(TYPE_INT_ARGB)和默认sRGB色彩空间中的整数像素。

Java是一种高级编程语言被广泛使用在现代世界。 它可以支持和处理的数字图像处理有效地使用各种功能。

Image类是java所有图形类的父类,本身不能直接生成图片或者导入图片

可以用Toolkit.getImage(String filename) 或者 Toolkit.getImage(URL url)获得Image的实例

还可以通过Image的一些子类直接创造,例如BufferedImage可以直接创造一个指定大小和色彩范围的Image

使用图像根据需要,可以有多种方法。

如果是放在组件中,如JButton、JLabel中,这些组件需要的是Icon接口的图像,那么使用ImageIcon类来加载图像比较好,new

ImageIcon(String

filename)或new

ImageIcon(URL

location)都可以直接加载图像文件。

甚至你还可以先用IO读出byte流,也能用byte[]创建ImageIcon。还可以由已有的Image来创建。

更为高级的用法是,你还可以先创建个空的ImageIcon,然后重写paintIcon(Component,Graphics,int,int)方法实现手工绘制!

如果你是要完成图像绘制,那么使用Image或BufferedImage比较好。

Toolkit.getDefaultToolkit().getImage(String或URL)就能加载图像。

这种方法需要一个图像观察者来监视图像是否加载完成,因为图像加载是异步的。通常,你用一个swing组件就可以充当这个角色。不过少用JLabel,因为我有一个程序用JLabel做观察者CPU占用率经常90%多,有时不出界面。用JPanel或JFrame都没出过这个问题。从API文档看,应该是所有的swing可视组件都实现了观察者接口。

选了观察者后,不用刻意观察加载情况,很简单的一个方法:swing组件的while(!prepareImage(Image))就可以了。

Image接口是Graphics类绘图drawImage要用的,所以绘制时应该选这个。

BufferedImage是实现了Image接口的图像,可以直接操作像索数据!所以利用算法生成图像再绘制,或图像处理可以使用这种方法。如浮雕、反色等。

加载方法是ImageIO类的read方法。