BufferedImage neu streichenJava

Java-Forum
Anonymous
 BufferedImage neu streichen

Post by Anonymous »

Ich versuche, eine kleine Bildverarbeitung mit Java durchzuführen. Der Benutzer sollte in der Lage sein, ein Bild zu laden und durch Klicken auf eine Schaltfläche einige einfache Änderungen am Bild vorzunehmen.
Das Laden und Anzeigen des Bildes ist kein Problem, aber wenn ich versuche, daraus ein Binärbild zu erstellen, erzeugt die repaint()-Methode ein schwarzes Bild auf dem Bildschirm.
Ich denke, das Problem liegt bei der repaint()-Methode. Ich habe bereits die Suchfunktion und Google verwendet, aber ich habe immer noch keine Ahnung, was in meinem Code falsch ist.
Das habe ich bisher:

Code: Select all

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);
}
}
}
Ich hoffe, Sie können mir helfen und erklären, was ich falsch mache. Vielen Dank im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post