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了解更多详细信息
如果您“确实”必须使用Image
和Toolkit
来加载它们,则还应该查看MediaTracker
,但是由于BufferedImage
(由ImageIO.read
返回)扩展了Image
,真的没有什么需要