Сейчас я пишу код, который выполняет простую обработку изображений. В моем коде нажатие различных кнопок на экране выполняет свертку и/или манипулирует значениями RGB каждого пикселя для отображения различных эффектов, таких как оттенки серого и обнаружение краев.
Я добавил увеличительное стекло функция, позволяющая приблизить определенные части обработанного изображения и вынести их на отдельную панель. Чтобы захватить все, что находится на обработанном изображении, я использовал метод createScreenCapture в классе Robot, чтобы захватить область вокруг курсора мыши. Проблема в том, что увеличенное изображение всегда показывает необработанное исходное изображение вместо обработанного.
Ниже приведен код, который отображает изображения на экране. Я использовал ImageIcon, чтобы изображение поместилось в панели в рамке.
public void showOnScreen(){
ImageIcon originalIcon = new ImageIcon(original_img_panel.loadedImg);
img = originalIcon.getImage();
newimg = img.getScaledInstance(550,550,Image.SCALE_SMOOTH);
originalIcon = new ImageIcon(newimg);
original_img_panel.original_label.setIcon(originalIcon);
//processed image goes through the same process
}
Ниже приведен код, который создает шапку экрана. Он захватывает небольшую прямоугольную область вокруг курсора мыши и сохраняет ее в ZoomPanel.zoomedInImage, а затем рисует ее с параметром current_zoom_perc, установленным пользователем, в ZoomPanel.
public void mouseMoved(MouseEvent e) {
Point mousePoint = e.getPoint();
try {
Robot r = new Robot();
zoomPanel.zoomedInImage = r.createScreenCapture(new Rectangle(mousePoint.x, mousePoint.y, 150, 150));
zoomPanel.zoomedInImage = zoomPanel.zoomedInImage.getScaledInstance((int)(150*current_zoom) ,(int)(150*current_zoom_perc),Image.SCALE_SMOOTH);
zoomPanel.repaint();
}
catch (AWTException ex) {
throw new RuntimeException(ex);
}
}
Пример изображения, которое было обработано с помощью обнаружения краев, а затем увеличено (показано в правом нижнем углу). Увеличенное изображение — это увеличенная версия исходного изображения.
Я не совсем уверен, что здесь можно изменить.. Спасибо!
РЕДАКТИРОВАТЬ: Вот класс ZoomedInPanel, класс объекта ZoomPanel.
public class zoomedInPanel extends JPanel {
JLabel zoomedInLabel = new JLabel();
Image zoomedInImage;
boolean cursorInPanel = false;
public zoomedInPanel() {
setBounds(950,555,150,150);
setLayout(null);
setBackground(Color.WHITE);
zoomedInLabel.setBounds(0,0,150,150);
zoomedInLabel.setBackground(Color.WHITE);
add(zoomedInLabel);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(zoomedInImage, 0, 0, this);
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... lved-image
Robot.createScreenCapture всегда захватывает несвёрнутое изображение. ⇐ JAVA
Программисты JAVA общаются здесь
1720283097
Anonymous
Сейчас я пишу код, который выполняет простую обработку изображений. В моем коде нажатие различных кнопок на экране выполняет свертку и/или манипулирует значениями RGB каждого пикселя для отображения различных эффектов, таких как оттенки серого и обнаружение краев.
Я добавил увеличительное стекло функция, позволяющая приблизить определенные части обработанного изображения и вынести их на отдельную панель. Чтобы захватить все, что находится на обработанном изображении, я использовал метод createScreenCapture в классе Robot, чтобы захватить область вокруг курсора мыши. Проблема в том, что увеличенное изображение всегда показывает необработанное исходное изображение вместо обработанного.
Ниже приведен код, который отображает изображения на экране. Я использовал ImageIcon, чтобы изображение поместилось в панели в рамке.
public void showOnScreen(){
ImageIcon originalIcon = new ImageIcon(original_img_panel.loadedImg);
img = originalIcon.getImage();
newimg = img.getScaledInstance(550,550,Image.SCALE_SMOOTH);
originalIcon = new ImageIcon(newimg);
original_img_panel.original_label.setIcon(originalIcon);
//processed image goes through the same process
}
Ниже приведен код, который создает шапку экрана. Он захватывает небольшую прямоугольную область вокруг курсора мыши и сохраняет ее в ZoomPanel.zoomedInImage, а затем рисует ее с параметром current_zoom_perc, установленным пользователем, в ZoomPanel.
public void mouseMoved(MouseEvent e) {
Point mousePoint = e.getPoint();
try {
Robot r = new Robot();
zoomPanel.zoomedInImage = r.createScreenCapture(new Rectangle(mousePoint.x, mousePoint.y, 150, 150));
zoomPanel.zoomedInImage = zoomPanel.zoomedInImage.getScaledInstance((int)(150*current_zoom) ,(int)(150*current_zoom_perc),Image.SCALE_SMOOTH);
zoomPanel.repaint();
}
catch (AWTException ex) {
throw new RuntimeException(ex);
}
}
Пример изображения, которое было обработано с помощью обнаружения краев, а затем увеличено (показано в правом нижнем углу). Увеличенное изображение — это увеличенная версия исходного изображения.
Я не совсем уверен, что здесь можно изменить.. Спасибо!
[b]РЕДАКТИРОВАТЬ:[/b] Вот класс ZoomedInPanel, класс объекта ZoomPanel.
public class zoomedInPanel extends JPanel {
JLabel zoomedInLabel = new JLabel();
Image zoomedInImage;
boolean cursorInPanel = false;
public zoomedInPanel() {
setBounds(950,555,150,150);
setLayout(null);
setBackground(Color.WHITE);
zoomedInLabel.setBounds(0,0,150,150);
zoomedInLabel.setBackground(Color.WHITE);
add(zoomedInLabel);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(zoomedInImage, 0, 0, this);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78714964/robot-createscreencapture-always-captures-non-convolved-image[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия