在Java中读取图像文件的方法有什么不同?
java中有多种读取图像文件的方法,例如在Java中读取图像文件的方法有什么不同?,java,image,image-processing,bufferedimage,color-channel,Java,Image,Image Processing,Bufferedimage,Color Channel,java中有多种读取图像文件的方法,例如BufferedImage和ImageIcon。我想知道这些案例之间的区别是什么?它们是否依赖于上下文,在特定情况下只能使用其中一个 读取用户通过JFileChooser选择的图像并分离图像的颜色通道的最佳方法是什么?一个好方法是使用不同的ImageIO.read方法,这些方法返回BuffereImage对象 Image是一个抽象类,所以我认为真正的问题是哪个子类对程序更有效。如果需要硬件加速,请使用VolatileImage。更多信息。ImageIcon
BufferedImage
和ImageIcon
。我想知道这些案例之间的区别是什么?它们是否依赖于上下文,在特定情况下只能使用其中一个
读取用户通过
JFileChooser
选择的图像并分离图像的颜色通道的最佳方法是什么?一个好方法是使用不同的ImageIO.read方法,这些方法返回BuffereImage对象
Image是一个抽象类,所以我认为真正的问题是哪个子类对程序更有效。如果需要硬件加速,请使用VolatileImage。更多信息。ImageIcon
(和Toolkit#createImage
/Toolkit#getImage
)使用后台加载过程。也就是说,在调用这些方法之后,它们将立即返回,并创建了一个后台线程来实际加载图像数据
当通过慢速连接加载大图像时,比如老式的28k调制解调器(啊,我是多么记得那些日子啊),就会用到这些。这意味着您的应用程序可以在下载图像时继续运行
您将在Graphics
类中发现drawImage
方法接受ImageObserver
接口,并且java.awt.Component
实现了该接口,这使得组件能够在图像实际完成加载后自动更新自己
另一方面,ImageIO
在图像完全加载之前不会返回。它还可以更容易地引入新的读写器,使API比原始API灵活得多<代码>图像IO还支持更广泛的现成图像
BufferedImage
也是一个灵活得多的图像类,尤其是在对图像应用效果时
现在,我个人更喜欢ImageIO
。如果我知道我正在通过一个可能较慢的连接加载大型图像或图像,我将创建自己的后台线程来加载它们。虽然有点复杂,但权衡大大超过了少量的额外工作——IMHO
用户读取JFileChooser选择的图像并分离图像的颜色通道的最佳方法是什么
ImageIO
毫无疑问。为了对使用ImageIcon
加载的图像进行任何严肃的操作,您必须将该图像转换为BufferedImage
无论如何“读取java中的图像文件,如BufferedImage”BufferedImage
API不提供读取图像的方法。DYMjavax.imageio.imageio
,和java.awt.Toolkit
?同意,imageio是一条出路(至少在不使用JavaFX的情况下)。@Gimby:使用JavaFX时你会怎么做?