Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中读取图像文件的方法有什么不同?_Java_Image_Image Processing_Bufferedimage_Color Channel - Fatal编程技术网

在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

java中有多种读取图像文件的方法,例如
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不提供读取图像的方法。DYM
javax.imageio.imageio
,和
java.awt.Toolkit
?同意,imageio是一条出路(至少在不使用JavaFX的情况下)。@Gimby:使用JavaFX时你会怎么做?