Как вставить картинку в java

Загрузка и сохранение изображений при помощи библиотеки ввода/вывода изображений (Image I/O Library)

Содержание

Введение

public class GetList <
public static void main ( String args []) <
String readerNames [] = ImageIO.getReaderFormatNames () ;
printlist ( readerNames, «Reader names:» ) ;
String readerMimes [] = ImageIO.getReaderMIMETypes () ;
printlist ( readerMimes, «Reader MIME types:» ) ;
String writerNames [] = ImageIO.getWriterFormatNames () ;
printlist ( writerNames, «Writer names:» ) ;
String writerMimes [] = ImageIO.getWriterMIMETypes () ;
printlist ( writerMimes, «Writer MIME types:» ) ;
>

Выполнив программу GetList в базовой реализации Sun (при условии, что не установлены никакие другие провайдеры), вы должны увидеть следующее:

Программа ReadSharp

import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
import java.awt.*;
import javax.swing.*;

public class ReadSharp <
private static class FrameShower implements Runnable <
final Frame frame;

При выполнении программы ReadSharp введите название изображения в командной строке. Используем, например, изображение из Digital Images with ConvolveOp от 10 февраля 2004 года.

Как вставить картинку в java

ReadSharp наглядно демонстрирует, что не нужно определять формат изображения при его чтении. Как правило, система корректно определит формат, основываясь на нескольких первых байтах потока, обычно называемых магическим числом.

Запись изображений

Запись изображений может быть столь же проста, как и их чтение, хотя можно также определить метаданные, если необходим больший контроль. В базовом варианте есть три формы метода write:

Все три формы метода write возвращают логическое значение (boolean). Оно указывает, доступен ли соответствующий объект в системе. Например, при запросе GIF-писателя возвратится false, потому что такого объекта нет в системе.

Определение метаданных посредством класса ImageWriteParam

Теперь установите качество сжатия при помощи:

Вместо того, чтобы выбирать значение наугад, можно спросить, какие значения качества сжатия поддерживаются (или насколько будет выполнено сжатие):

Программа Compress

import java.awt.image.*;
import javax.imageio.*;
import javax.imageio.stream.*;
import java.io.*;
import java.util.Iterator;

Как вставить картинку в java

Как вставить картинку в java

Как вставить картинку в java

Подробная информация по Image I/O Library приведена в Java Image I/O API Guide.

Источник

Работа с изображениями на Java

Краткий обзор нескольких библиотек обработки изображений Java, включая простой пример, выполненный во всех из них

1. Обзор

В этом уроке мы рассмотрим несколько доступных библиотек обработки изображений и выполним простую операцию обработки изображений – загрузим изображение и нарисуем на нем фигуру.

Мы попробуем МОКРУЮ (и немного качающуюся) библиотеку, ImageJ, OpenIMAJ и двенадцать обезьян.

2. AWT

AWT-это встроенная библиотека Java, которая позволяет пользователю выполнять простые операции, связанные с отображением, такие как создание окна, определение кнопок и прослушивателей и так далее. Он также включает в себя методы, позволяющие пользователю редактировать изображения. Он не требует установки, так как поставляется с Java.

2.1. Загрузка изображения

Первое, что нужно сделать, это создать объект BufferedImage из изображения, сохраненного на нашем диске:

2.2. Редактирование изображения

2.3. Отображение изображения

Теперь, когда мы нарисовали что-то на нашем изображении, мы хотели бы показать это. Мы можем сделать это с помощью объектов библиотеки Swing. Сначала мы создаем JLabel объект, представляющий область отображения текста или/и изображения:

3. ImageJ

Это довольно мощная библиотека, лучше, чем Swing и AWT, так как целью ее создания была обработка изображений, а не операции с графическим интерфейсом. Плагины содержат много бесплатных алгоритмов, что хорошо, когда мы хотим научиться обработке изображений и быстро увидеть результаты, а не решать математические и оптимизационные задачи, лежащие в основе алгоритмов IP.

3.1. Зависимость Maven

Чтобы начать работу с ImageJ, просто добавьте зависимость в вашего проекта pom.xml файл:

3.2. Загрузка изображения

Чтобы загрузить изображение, вам нужно использовать метод open Image() static, из I J класс:

3.3. Редактирование изображения

Для редактирования изображения нам придется использовать методы из Image Processor object, прикрепленные к нашему ImagePlus объекту. Думайте об этом как о Графике объекте в AWT:

3.4. Отображение изображения

Вам нужно только вызвать show() метод Image Plus object:

4. OpenIMAJ

OpenIMAJ – это набор библиотек Java, ориентированных не только на компьютерное зрение и обработку видео, но и на машинное обучение, обработку аудио, работу с Hadoop и многое другое. Все части проекта OpenIMAJ можно найти здесь в разделе “Модули.” Нам нужна только часть обработки изображений.

4.1. Зависимость Maven

Чтобы начать работу с OpenIMAJ, просто добавьте зависимость в вашего проекта pom.xml файл:

4.1. Загрузка изображения

Чтобы загрузить изображение, используйте метод ImageUtilities.readMBF() :

MBF означает многополосное изображение с плавающей запятой (RGB в этом примере, но это не единственный способ представления цветов).

4.2. Редактирование изображения

Чтобы нарисовать прямоугольник, нам нужно определить его форму, которая представляет собой многоугольник, состоящий из 4 точек (верхний левый, нижний левый, нижний правый, верхний правый):

Как вы могли заметить, при обработке изображений ось Y меняется на противоположную. После определения формы нам нужно нарисовать ее:

4.3. Отображение изображения

Нам нужно использовать Утилиты отображения :

5. Изображение TwelveMonkeys

Библиотека TwelveMonkeys |/ImageIO предназначена для расширения Java ImageIO API, с поддержкой большего количества форматов.

В большинстве случаев код будет выглядеть так же, как и встроенный код Java, но он будет работать с дополнительными форматами изображений после добавления необходимых зависимостей.

6. Резюме

Вы познакомились с 4 библиотеками, которые могут помочь вам работать с изображениями. Идя дальше, вы, возможно, захотите поискать некоторые алгоритмы обработки изображений, такие как извлечение краев, повышение контрастности, использование фильтров или распознавание лиц.

Для этих целей, возможно, было бы лучше начать изучать ImageJ или OpenIMAJ. Оба они легко включаются в проект и гораздо более мощны, чем AWT, в отношении обработки изображений.

Источник

Как вставить картинку в java

Нелетучий Мыш
Как вставить картинку в javaКак вставить картинку в javaКак вставить картинку в javaКак вставить картинку в java

Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151


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

Способ 1. Добавление картинки с использованием JLabel.

Это вероятно самый простой способ, но в тоже время не самый гибкий, поскольку все управление за отображение рисунком возлагается на плечи JLabel.

Чтобы добавить рисунок на JLabel существуют следующие методы.
setIcon(Icon image);
Конструкторы
JLabel(Icon image);
JLabel(Icon image, int horizontalAlignment);
JLabel(String text, Icon icon, int horizontalAlignment);

Код
public class LablePictureFrame extends javax.swing.JFrame <

public LablePictureFrame() <
initComponents();
>

private void initComponents() <
jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource(«/MoonCat.gif»)));
jLabel1.setText(«Foreign Cat. «);
jLabel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, true));
getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER);

public static void main(String args[]) <
java.awt.EventQueue.invokeLater(new Runnable() <
public void run() <
new LablePictureFrame().setVisible(true);
>
>);
>

private javax.swing.JLabel jLabel1;
>

Способ 2. Создание JPanel c возможностью добавления картинки в качестве фона.

Этот способ более гибкий, и практически ограничивается только нашей фантазией. Он заключается в том, что мы напишем подкласс для класса JPanel и переопределим его метод public void paint(Graphics g). Реализация нашего метода будет производить прорисовку картинки на панели. Более того, мы будем управлять размерами изображения, и подстраивать (вписывать) его под размеры JPanel. Но и это еще не все: Мы оставим возможность добавления дочерних компонентов на эту панель, и у нас получится что-то компоненты размещаются на «красивом» фоне.

Вот пример такой панели:

Код
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class PicturePanel extends javax.swing.JPanel <
// Храним 2 изображения: оригинальное и текущее.
// Оригинальное используется для получения текущего в зависимости от размеров панели.
// Текущее непосредственно прорисовывается на панели.
private BufferedImage originalImage = null;
private Image image = null;

public PicturePanel() <
initComponents();
>

private void initComponents() <
setLayout(null);
addComponentListener(new java.awt.event.ComponentAdapter() <
public void componentResized(java.awt.event.ComponentEvent evt) <
formComponentResized(evt);
>
>);

// Рисуем подкомпоненты.
super.paintChildren(g);
// Рисуем рамку
super.paintBorder(g);
>

// Методы для настройки картинки.
public BufferedImage getImage() <
return originalImage;
>

public void setImage(BufferedImage image) <
this.image = image;
>

public void setImageFile(File imageFile) <
try <
if (imageFile == null) <
originalImage = null;
>
BufferedImage bi = ImageIO.read(imageFile);
originalImage = bi;
> catch (IOException ex) <
System.err.println(«Неудалось загрузить картинку!»);
ex.printStackTrace();
>
repaint();
>
>

А вот пример её использования:

Код
public class PanelPictureFrame extends javax.swing.JFrame <

public PanelPictureFrame() <
initComponents();
>

private void initComponents() <
picturePanel1 = new PicturePanel();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
picturePanel1.setLayout(new java.awt.BorderLayout());

picturePanel1.setImageFile(new java.io.File(«C:\\Documents and Settings\\All Users\\Документы\\Мои рисунки\\Образцы рисунков\\Зима.jpg»));
jPanel1.setLayout(new java.awt.GridLayout());

jPanel1.setOpaque(false);
jLabel1.setFont(new java.awt.Font(«Tahoma», 0, 24));
jLabel1.setForeground(new java.awt.Color(255, 0, 0));
jLabel1.setText(«\u042d\u0442\u043e JLabel»);
jPanel1.add(jLabel1);

jButton1.setText(«\u0410 \u044d\u0442\u043e \u043a\u043d\u043e\u043f\u043a\u0430!»);
jPanel1.add(jButton1);

public static void main(String args[]) <
java.awt.EventQueue.invokeLater(new Runnable() <
public void run() <
new PanelPictureFrame().setVisible(true);
>
>);
>

private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private PicturePanel picturePanel1;
>

Надеюсь что данная статья будет Вам полезна. На все вопросы постараюсь ответить.
С Уважением MoonCat.

Leprechaun Software Developer
Как вставить картинку в javaКак вставить картинку в javaКак вставить картинку в javaКак вставить картинку в java

Профиль
Группа: Модератор
Сообщений: 15683
Регистрация: 24.3.2004

Репутация: 206
Всего: 534

Спасибо SoulKeeper за дополнение.

Код
import javax.swing.*;
import java.awt.*;

public class ImagePanel extends JPanel <

private Image image;

public Image getImage() <
return image;
>

public void setImage(Image image) <
this.image = image;
>

public void paintComponent(Graphics g) <
super.paintComponent(g);

Код
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class TestPicture <

public static void main(String[] args) <

JFrame f = new JFrame();
f.setTitle(«My Panel»);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ImagePanel pp = new ImagePanel();
pp.setLayout(new BorderLayout());
try <
pp.setImage(ImageIO.read(new File(«picture.jpg»)));
> catch (IOException e) <
e.printStackTrace();
>

JPanel panel = new JPanel();
panel.setLayout(new java.awt.GridLayout());
panel.setOpaque(false);

JLabel label = new JLabel();
label.setFont(new java.awt.Font(«Tahoma», 0, 24));
label.setForeground(new java.awt.Color(255, 0, 0));
label.setText(«\u042d\u0442\u043e JLabel»);
panel.add(label);

JButton button = new JButton();

button.setText(«\u0410 \u044d\u0442\u043e \u043a\u043d\u043e\u043f\u043a\u0430!»);
panel.add(button);

pp.setPreferredSize(new Dimension(10000, 10000));
f.add(new JScrollPane(pp));

f.pack();
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.setVisible(true);
>
>

Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java Как вставить картинку в java

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »

[ Время генерации скрипта: 0.1275 ] [ Использовано запросов: 22 ] [ GZIP включён ]

Источник

Компьютерная графика → Работа с изображениями в Java: чтение, запись, изменение

Так, как основным языком в этом курсе стал язык Java. Покажу пример того как работать с файлами изображений в Java, чтобы вам не пришлось долго искать как это делать. Для других языков руководства можно найти в Интернете.

Того, что здесь будет показано вполне достаточно чтобы выполнить все лабы.

Итак, поехали.

Класс импортируется с пакета java.awt.image:

Для открытия изображения будем использовать два класса: File, ImageIO:

В параметра конструктора класса File, мы должны указать путь до файла. Путь может быть абсолютным, либо относитьтельно корня проекта. Можно открывать картинки с расширением jpg, png, bmp.

После этого в объекта image у нас будет храниться вся картинка, которую мы открыли. Мы можем получить у этой картинки значение любого пикселя в виде цвета в RGB. Чтобы получить цвет какого либо пикселя нам нужен класс Color:

Чтобы получить цвет из пикселя с координатами [20, 20] нужно написать:

Тут также показано как получить значение каждого канала(красный, зеленый, синий) этого цвета. Значения каналов находятся в диапазоне [0, 255].

Значения этих каналов мы будем использовать для обработки изображений. После обработки мы обычно получаем новые значения для каждого канала. Чтобы объединить три канала в один цвет, создаем новый объект класса Color:

Затем, мы можем установить этот цвет как цвет какого-либо пикселя в изображение:

После того, как мы обработали изображение, его нужно сохранить обратно в файл:

Вместо «jpg» можно использовать также «png» или «bmp».

Давайте для примера я напишу приложение, которое будет превращать исходное изображение в черно-белое, используя то, что написано в статье.

Обычно для результирующего изображения создается новый объект типа BufferedImage такого же размера и типа, как исходное изображение:

Преобразователь в черное белое

Возьмем для примера любое цветное изображение. Например:

Как вставить картинку в java

Поместим его в корень проекта.

Запустив эту программу мы получим новую картинку в той же папке где и исходная картинка. И она должна быть такой:

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *