Java具有此方法:getWidth(ImageObserver observer)

它返回图像的宽度。在进入需要ImageObserver的部分之前,此方法似乎足够简单。 ImageObserver用作参数的目的是什么。还有其他解决方法吗?

请注意,我不能只使用此处提到的ImageIcon:Getting Height and Width of Image in Java without an ImageObserver
原因是因为我最终将从JFileChooser加载图像。这也是为什么我不能只对Height和Width使用常量的原因。我不知道用户要使用哪张图片。

另外,由于这两个原因,我不认为应该发布代码

A)我的代码与SSCCE代码段相距甚远:http://sscce.org/

B)这是一个普遍的问题,我觉得我的代码太具体了。

最佳答案

JavaDocs


  确定图像的宽度。如果宽度未知,则此方法返回-1,稍后将通知指定的ImageObserver对象。


这基本上意味着,如果Image没有完全实现(通常将其装入后台线程),则在知道该值时将通知ImageObserver

更好的解决方案是使用ImageIO API,因为read方法在图像完全加载(并实现)之前不会返回,或者如果无法加载图像则抛出IOException

请参阅Reading/Loading an Image了解更多详细信息

如果您“确实”必须使用ImageToolkit来加载它们,则还应该查看MediaTracker,但是由于BufferedImage(由ImageIO.read返回)扩展了Image,真的没有什么需要

08-04 15:45