Как я могу прочитать изображение из URL в Java?

У меня есть сервлет в моем веб-приложении, который служит изображениям, и когда я посещаю эти URL-адреса с изображениями браузера, сервер правильно. Тогда у меня есть этот другой сервлет, который изменяет размеры изображений, идея заключается в том, чтобы посещать изображение с помощью url в resize servlet, а затем изменять размер изображения. Но почему-то все следующие методы возвращают 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);

Ответы

Ответ 1

URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg");
Image image = ImageIO.read(url);  

или

URL url = new URL("http://www.digitalphotoartistry.com/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://www.digitalphotoartistry.com/rose1.jpg");
    // Case 1
    RenderedImage img = ImageIO.read(imageURL);
    System.out.println(img);
}

выход:

[email protected]: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 col
or space = [email protected] transparency = 1 has alpha = fa
lse isAlphaPre = false ByteInterleavedRaster: width = 553 height = 737 #numDataE
lements 3 dataOff[0] = 2

Ответ 2

Из документы:

Если зарегистрированный ImageReader заявляет, что не может прочитать полученный поток, возвращается null.

Может быть, у вас нет зарегистрированного ImageReader для типа изображения?