0

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)这是一个笼统的问题,我觉得我的代码太具体了。

4

1 回答 1

3

来自JavaDocs

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

这基本上意味着如果Image没有完全实现(因为它通常是在后台线程中加载的),ImageObserver则会在知道值时通知 。

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

查看阅读/加载图像以获取更多详细信息

如果你“真的”必须使用Image并加载它们,那么你也Toolkit应该看看MediaTrackerBufferedImageImageIO.readImage

于 2015-08-07T03:05:26.490 回答