获取图像的高度和宽度时,ImageObserver 字段的用途是什么?
What is the purpose of the ImageObserver field when getting the height and width of an image?
Java 有这个方法:getWidth(ImageObserver observer)
它 returns 图像的宽度。在您到达需要 ImageObserver 的部分之前,此方法看起来很简单。 ImageObserver 作为参数的目的是什么。有没有其他办法解决这个问题?
请注意,我不能只使用这里提到的 ImageIcon:Getting Height and Width of Image in Java without an ImageObserver
原因是因为我最终将从 JFileChooser 加载我的图像。这也是为什么我不能只对高度和宽度使用常量的原因。我不知道用户会想要使用哪张图片。
另外,出于这两个原因,我觉得我不应该 post 我的代码
A) 我的代码离 SSCCE 代码还很远:http://sscce.org/
B) 这是一个很笼统的问题,我觉得我的代码太具体了。
来自JavaDocs
Determines the width of the image. If the width is not yet known, this method returns -1 and the specified ImageObserver object is notified later.
这基本上意味着如果Image
没有完全实现(因为它通常在后台线程中加载),当知道该值时会通知ImageObserver
。
更好的解决方案是使用 ImageIO
API 因为 read
方法不会 return 直到图像完全加载(并实现) 或者如果无法加载图像则抛出 IOException
。
查看 Reading/Loading an Image 了解更多详情
如果你 "really" 必须使用 Image
和 Toolkit
来加载它们,那么你也应该看看 MediaTracker
,但是因为 BufferedImage
(由 ImageIO.read
编辑 return)扩展了 Image
,确实没有太大必要
Java 有这个方法:getWidth(ImageObserver observer)
它 returns 图像的宽度。在您到达需要 ImageObserver 的部分之前,此方法看起来很简单。 ImageObserver 作为参数的目的是什么。有没有其他办法解决这个问题?
请注意,我不能只使用这里提到的 ImageIcon:Getting Height and Width of Image in Java without an ImageObserver 原因是因为我最终将从 JFileChooser 加载我的图像。这也是为什么我不能只对高度和宽度使用常量的原因。我不知道用户会想要使用哪张图片。
另外,出于这两个原因,我觉得我不应该 post 我的代码
A) 我的代码离 SSCCE 代码还很远:http://sscce.org/
B) 这是一个很笼统的问题,我觉得我的代码太具体了。
来自JavaDocs
Determines the width of the image. If the width is not yet known, this method returns -1 and the specified ImageObserver object is notified later.
这基本上意味着如果Image
没有完全实现(因为它通常在后台线程中加载),当知道该值时会通知ImageObserver
。
更好的解决方案是使用 ImageIO
API 因为 read
方法不会 return 直到图像完全加载(并实现) 或者如果无法加载图像则抛出 IOException
。
查看 Reading/Loading an Image 了解更多详情
如果你 "really" 必须使用 Image
和 Toolkit
来加载它们,那么你也应该看看 MediaTracker
,但是因为 BufferedImage
(由 ImageIO.read
编辑 return)扩展了 Image
,确实没有太大必要