Как с помощью Java загрузить и сохранить рисунок из интернет

Как с помощью Java загрузить и сохраниь рисунок из интернет Придумалось однажды мне написать приложение, которое бы рисунки с ресурса одного загружало и аккуратно складовало бы их в нужную папку. Придумалось мне и написалось. При написании мудрость постиг, а именно, как можно загрузить рисунки с интернета и сохранить. Решил поделиться знанием полученным. Давайте посмотрим, как загрузить эмблему Google с официального сайта, показать её в своем приложении и сохранить. Напишем тестовое приложение, как на рисунке.

Как оказалось, сделать это очень просто. Java сама все продумала. От нас же требуется написать несколько строк кода, который и сделает возможным загрузку и сохранение рисунков. Ключевым классом при загрузке и сохранении выступает ImageIO, полное имя которого javax.imageio.ImageIO. Для начала нам необходимо с помощью него загрузить из нужного места сети рисунок. Делается это при помощи метода read класса ImageIO. Методу в качестве параметра передается объект URL. URL создается при помощи конструктора URL со строковым параметром. Рисунок загружен. А теперь требуется этот рисунок сохранить. Это делается в два коротких шага. Первый шаг — создаем файл, в который сохранится загруженное содержимое. Работа с файловой системой осуществляется при помощи класса java.io.File. Второй шаг — собственно сохранение. Сохранение рисунка в файл выполняется при помощи класса ImageIO и метода write. А теперь смотрим код тестового примера, копируем и запускаем.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class TestFrame extends JFrame {

static String URL = "http://www.google.ru/intl/en_com/images/logo_plain.png";

	public static void createGUI() {
		JFrame frame = new JFrame("Тестовое окно");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JLabel label = new JLabel();		
		label.setBackground(Color.WHITE);
		label.setOpaque(true);
		frame.getContentPane().add(label, BorderLayout.CENTER);
		
		JButton button = new JButton("Загрузить логотип");
		button.setFocusable(false);
		button.setFont(new Font("Verdana", Font.PLAIN, 12));
		button.addActionListener(new ActionListener() {			
			public void actionPerformed(ActionEvent e) {
				Image img = loadImage();
				label.setIcon(new ImageIcon(img, "Google logo"));				
			}
		});
		frame.getContentPane().add(button, BorderLayout.SOUTH);
		
		frame.setPreferredSize(new Dimension(285, 200));
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	private static Image loadImage() {
		try {
			String fileName = "google.png";			
			BufferedImage img = ImageIO.read(new URL(URL));
			File file = new File(fileName);
			if (!file.exists()) {
				file.createNewFile();
			}
			ImageIO.write(img, "png", file);
			return img;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame.setDefaultLookAndFeelDecorated(true);
				createGUI();
			}
		});
	}
}

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: