Перерисовать буферизованное изображениеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Перерисовать буферизованное изображение

Сообщение Anonymous »

Я пытаюсь выполнить небольшую обработку изображений с помощью Java. Пользователь должен иметь возможность загрузить изображение и добавить к нему несколько простых изменений, нажав кнопку.
Загрузка и отображение изображения не представляет проблем, но когда я пытаюсь создать из него двоичное изображение, метод repaint() делает на экране черное изображение.
Я думаю, проблема связана с методом repaint(). Я уже использовал функцию поиска и Google, но до сих пор понятия не имею, что не так в моем коде.
Это то, что у меня есть:

Код: Выделить всё

public class ImageProcessing extends JFrame implements ActionListener {

private  JPanel imagePanel;
private  JPanel buttonPanel;
private JButton binaryButton;
private  JButton loadButton;
private BufferedImage image;
private final String WINDOW_TITLE = "Image Processing";

public ImageProcessing() {
createWindow();
}

private void createWindow() {
this.setTitle(WINDOW_TITLE);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);

imagePanel = new ImagePanel();
buttonPanel = new JPanel();
this.add(imagePanel, BorderLayout.CENTER);

loadButton = new JButton("Load image");
loadButton.addActionListener(this);
buttonPanel.add(loadButton);
this.add(buttonPanel, BorderLayout.SOUTH);

binaryButton = new JButton("binary");
binaryButton.addActionListener(this);
buttonPanel.add(binaryButton);

this.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.loadButton) {
String filePath = getImageFile();
if (filePath != null) {
try {
image = ImageIO.read(new File(filePath));
// imageBackup = image;
} catch (IOException e1) {
e1.printStackTrace();
}
this.repaint();
}
} else if (e.getSource() == this.binaryButton) {
image = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
imagePanel = new ImagePanel();
this.repaint();
}
}

private String getImageFile() {
JFileChooser chooser = new JFileChooser();
int result = chooser.showOpenDialog(null);
File file = null;
if (result == JFileChooser.APPROVE_OPTION) {
file = chooser.getSelectedFile();
return file.getPath();
} else
return null;
}

class ImagePanel extends JPanel {
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}
}
Надеюсь, вы сможете мне помочь и объяснить, что я делаю неправильно. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/140 ... feredimage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»