如何从Java中读取URL中的图像?

我在我的Web应用程序中有servlet提供图像,当我访问那些带有浏览器图像的URL时,服务器是正确的。 然后我有另一个调整图像大小的servlet,想法是在resize servlet中通过url访问get图像,然后调整图像大小。 但由于某种原因,以下所有方法都返回null,但是当我使用浏览器访问给定的URL时,图像显示正确。

URL imageURL = new URL(fullUrl); // Case 1 RenderedImage img = ImageIO.read(imageURL); // Case 2 BufferedImage img = JAI.create("url", imageURL).getAsBufferedImage(); // Case 3 Image img = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(imageURL); 

 URL url = new URL("http://sofzh.miximages.com/java/rose1.jpg"); Image image = ImageIO.read(url); 

要么

 URL url = new URL("http://sofzh.miximages.com/java/rose1.jpg"); java.awt.Image image = java.awt.Toolkit.getDefaultToolkit().createImage(url); 

更新:

此代码适用于我尝试检查您的url。

 public static void main(String[] args) throws Exception { URL imageURL = new URL("http://sofzh.miximages.com/java/rose1.jpg"); // Case 1 RenderedImage img = ImageIO.read(imageURL); System.out.println(img); } 

输出:

 BufferedImage@e80a59: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 col or space = java.awt.color.ICC_ColorSpace@1ff5ea7 transparency = 1 has alpha = fa lse isAlphaPre = false ByteInterleavedRaster: width = 553 height = 737 #numDataE lements 3 dataOff[0] = 2 

来自文档 :

如果没有已注册的ImageReader声称能够读取生成的流,则返回null

难道你没有为图像类型注册ImageReader吗?