Как я могу прочитать изображение с URL в Java? - PullRequest
14 голосов
/ 21 октября 2010

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

Ответы [ 2 ]

22 голосов
/ 21 октября 2010
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);
}

output:

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
0 голосов
/ 21 октября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...