如何从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
吗?