Чтение-запись изображения с URL - PullRequest
3 голосов
/ 06 сентября 2011

Я пытаюсь загрузить image с URL-адреса ... Мой код:

String url = "http://mysite.com/image.xyz" 

, где xyz может быть jpg / png / jpeg ..

Теперь я могу читать изображение из URL, используя

BufferedImage image = ImageIO.read(url);

Теперь мне нужно, чтобы при записи изображения в файл:

ImageIO.write(image, "variable" , new File("C:\\out1.jpg"));

мне нужно значение variableдолжно быть заменено значением xyz ... где значение xyz будет extracted от URL ....

Так как этого добиться ........

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Используйте класс java.net.URL:

URL u = new URL(url);
String name = u.getFile();
String ext = name.substring(name.lastIndexOf(".") + 1);

В ext у вас есть расширение.

[EDIT]

Несколько замечаний по другим опубликованным ответам:

Они оба являются хорошими ответами, если у вас нет URL с параметрами запроса (например, http://www.example.org/folder/file.png?size=big).

Используя последние три символа, он возвращает "большой" вместо png.

Кроме того, если изображение имеет формат .jpeg, оно возвращает "peg".

Использование просто после последнего "." в строке также опасен, более или менее по той же причине параметров запроса: он будет возвращать ".png? size = big".

java.net.URL примет во внимание все эти ситуации и вернет только имя файла. Для этого извлечение расширения - это все еще вопрос «нахождения точки», но, по крайней мере, на уже очищенной строке.

1 голос
/ 06 сентября 2011

Почему бы вам не взять подстроку после последней точки?

В качестве альтернативы используйте класс Apache Commons FileIO FilenameUtils, который предоставляет метод для получения расширения по пути.

Обратите внимание, что вы также можете добавить это расширение в выходной файл,может запутаться, если out.jpg на самом деле был файл PNG.

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