Это статья начального уровня, эксперты, пожалуйста, пропустите ее.
В этой статье мы научимся обрезать изображение в Java и сохранять обрезанные части отдельно в файл.
Мы научимся, выполнив следующие шаги:
1. Введите изображение и укажите путь к нему для обработки.
2. Разрешить пользователям перетаскивать часть, которую нужно обрезать.
3. После выбора используйте класс Robot для определения координат обрезанной детали.
4. Обрезать выбранное изображение и сохранить
Далее мы приступаем к кодированию.
Листинг 1: представленные классы
Скопируйте код кода следующим образом:
импортировать java.awt.Graphics;
импортировать java.awt.Rectangle;
импортировать java.awt.Robot;
импортировать java.awt.event.MouseEvent;
импортировать java.awt.event.MouseListener;
импортировать java.awt.event.MouseMotionListener;
импортировать java.awt.image.BufferedImage;
импортировать java.io.File;
импортировать javax.imageio.ImageIO;
импортировать javax.swing.JFrame;
проиллюстрировать:
1.Класс Graphics содержит методы рисования прямоугольников.
2. Мы используем класс Rectangle в качестве перетаскиваемой прямоугольной области для обрезки.
3.Класс Robot используется для создания снимков экрана.
4. Используйте прослушиватель мыши, чтобы узнать время перетаскивания мыши.
5. Класс Robot использует BufferedImage для обработки изображений.
6.Класс File используется для открытия файлов изображений.
7.Класс ImageIO используется для записи изображений в файлы изображений png или jpg.
8.JFrame используется для отображения интерфейса.
Теперь мы пишем входной класс, содержащий основной метод
Листинг 2: Начальный класс
Скопируйте код кода следующим образом:
общедоступный класс CropImage расширяет JFrame, реализует MouseListener, MouseMotionListener
{
int drag_status=0,c1,c2,c3,c4;
public static void main(String args[])
{
новый CropImage().start();
}
проиллюстрировать:
1. Написал класс CropImage.
2. Этот класс расширяет JFrame для реализации всех функций фрейма.
3. Реализованы различные прослушиватели событий мыши, чтобы узнать, когда пользователь начинает перетаскивать указатель мыши.
4.переменная drag_status используется для сохранения координат, когда мышь начинает перетаскивать
5. Мы определили основной метод для вызова метода запуска, который будет определен ниже.
Далее идет метод запуска
Листинг 2
Скопируйте код кода следующим образом:
публичное недействительное начало()
{
ImagePanel im=new ImagePanel("F://Wallpaper//wallpapers//1.jpg");
добавить (им);
setSize(400,400);
setVisible (истина);
addMouseListener (это);
addMouseMotionListener (это);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
проиллюстрировать:
1. Мы определяем класс ImagePanel, используя изображение, подлежащее обработке, в качестве параметра.
2. Поместите ImagePanel для отображения изображения в JFrame и начните прослушивать события мыши.
Далее мы определяем методы для обработки событий мыши.
Листинг 3. Обработчик событий мыши
Скопируйте код кода следующим образом:
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited (MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
перекрасить();
c1=arg0.getX();
c2=arg0.getY();
}
@Override
public void mouseReleased(MouseEvent arg0) {
перекрасить();
если (drag_status == 1)
{
c3=arg0.getX();
c4=arg0.getY();
пытаться
{
перетащилЭкран();
}
поймать (Исключение е)
{
е.printStackTrace();
}
}
}
@Override
public void mouseDragged(MouseEvent arg0) {
перекрасить();
перетаскивание_статус = 1;
c3=arg0.getX();
c4=arg0.getY();
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
общественная краска пустоты (Графика г)
{
супер.краска(г);
интервал ш = с1 - с3;
int h = c2 - c4;
ш = ш * -1;
ч = ч * -1;
если (ш<0)
ш = ш * -1;
g.drawRect(c1, c2, w, h);
}
проиллюстрировать:
1. При нажатии мыши сохраните текущие координаты в c1 и c2.
2. Установите для переменной состояния перетаскивания drag_status значение true, когда мышь нажата и начинается перетаскивание.
3. Когда кнопка мыши отпущена, это означает, что область обрезки изображения выбрана и вызывается метод перетаскивания экрана.
4. Метод рисования используется для отображения прямоугольника при перетаскивании и рисует прямоугольник по текущим координатам и изначально записанным координатам.
Ниже приведен код метода перетаскивания экрана.
Листинг 4: метод draggedScreen
Скопируйте код кода следующим образом:
public void draggedScreen() выдает исключение
{
интервал ш = с1 - с3;
int h = c2 - c4;
ш = ш * -1;
ч = ч * -1;
Робот-робот = новый робот();
BufferedImage img = robot.createScreenCapture(new Rectangle(c1, c2,w,h));
Файл save_path=новый файл("screen1.jpg");
ImageIO.write(img, "JPG", save_path);
System.out.println("Обрезанное изображение успешно сохранено.");
}}
проиллюстрировать:
1. Сначала рассчитайте высоту и ширину изображения.
2. Используйте класс Robot, чтобы сделать снимок экрана обрезанной области и сохранить его в другом файле screen1.jpg.
полный код
Листинг 5: ImagePanel.java
Скопируйте код кода следующим образом:
импортировать java.awt.Dimension;
импортировать java.awt.Graphics;
импортировать java.awt.Image;
импортировать javax.swing.ImageIcon;
импортировать javax.swing.JPanel;
класс ImagePanel расширяет JPanel {
личное изображение img;
public ImagePanel (String img) {
это(новый ImageIcon(img).getImage());
}
общественная ImagePanel (изображение img) {
это.img = img;
Размер измерения = новый размер (img.getWidth(null), img.getHeight(null));
// Размер измерения = новое измерение(10,10);
setPreferredSize (размер);
setMinimumSize (размер);
setMaximumSize (размер);
setSize (размер);
setLayout (нуль);
}
public void PaintComponent (Графика г) {
g.drawImage(img, 0, 0, null);
}
}
Листинг 6: CropImage.java
Скопируйте код кода следующим образом:
импортировать java.awt.Graphics;
импортировать java.awt.Rectangle;
импортировать java.awt.Robot;
импортировать java.awt.event.MouseEvent;
импортировать java.awt.event.MouseListener;
импортировать java.awt.event.MouseMotionListener;
импортировать java.awt.image.BufferedImage;
импортировать java.io.File;
импортировать javax.imageio.ImageIO;
импортировать javax.swing.JFrame;
общедоступный класс CropImage расширяет JFrame, реализует MouseListener, MouseMotionListener
{
int drag_status=0,c1,c2,c3,c4;
public static void main(String args[])
{
новый CropImage().start();
}
публичное недействительное начало()
{
ImagePanel im=new ImagePanel("F://Wallpaper//wallpapers//1.jpg");
добавить (им);
setSize(400,400);
setVisible (истина);
addMouseListener (это);
addMouseMotionListener (это);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void draggedScreen() выдает исключение
{
интервал ш = с1 - с3;
int h = c2 - c4;
ш = ш * -1;
ч = ч * -1;
Робот-робот = новый робот();
BufferedImage img = robot.createScreenCapture(new Rectangle(c1, c2,w,h));
Файл save_path=новый файл("screen1.jpg");
ImageIO.write(img, "JPG", save_path);
System.out.println("Обрезанное изображение успешно сохранено.");
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited (MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
перекрасить();
c1=arg0.getX();
c2=arg0.getY();
}
@Override
public void mouseReleased(MouseEvent arg0) {
перекрасить();
если (drag_status == 1)
{
c3=arg0.getX();
c4=arg0.getY();
пытаться
{
перетащилЭкран();
}
поймать (Исключение е)
{
е.printStackTrace();
}
}
}
@Override
public void mouseDragged(MouseEvent arg0) {
перекрасить();
перетаскивание_статус = 1;
c3=arg0.getX();
c4=arg0.getY();
}
@Override
public void mouseMoved(MouseEvent arg0) {
}
общественная краска пустоты (Графика г)
{
супер.краска(г);
интервал ш = с1 - с3;
int h = c2 - c4;
ш = ш * -1;
ч = ч * -1;
если (ш<0)
ш = ш * -1;
g.drawRect(c1, c2, w, h);
}
}