Java有这种方法:getWidth(ImageObserver observer)
返回图像的宽度。这个方法看起来很简单,直到你到达需要ImageObserver的部分。 ImageObserver作为参数的目的是什么。还有其他方法吗?
请注意,我无法使用此处提到的ImageIcon:Getting Height and Width of Image in Java without an ImageObserver 原因是因为我最终将从JFileChooser加载我的图像。这也是为什么我不能仅使用常数来表示高度和宽度的原因。我不知道用户想要使用哪张照片。
另外,由于这两个原因,我觉得我不应该发布我的代码
A)我的代码不是SSCCE代码的任何地方:http://sscce.org/
B)这是一个普遍的问题,我觉得我的代码太具体了。
答案 0 :(得分:3)
来自JavaDocs
确定图像的宽度。如果宽度尚不知道,则此方法返回-1,稍后会通知指定的ImageObserver对象。
这基本上意味着如果Image
未完全实现(因为它通常在后台线程中加载),则在知道值时将通知ImageObserver
。
更好的解决方案是使用ImageIO
API,因为read
方法在图像完全加载(并实现)之前不会返回,或者抛出IOException
如果无法加载图片。
有关详细信息,请查看Reading/Loading an Image
如果您“确实”必须使用Image
和Toolkit
来加载它们,那么您还应该看看MediaTracker
,但是从BufferedImage
开始(这是ImageIO.read
)返回Image
,真的没有多少需要