Bild vom FileChooser aus via ImageIcon in DB schreiben

E

EllaStar

Gast
Hallo Leute,
ich habe ein total verzwicktes Problem und bin jetzt am Ende meiner Kenntnisse (die sowieso eher begrenzt sind was JAVA angeht).
Und zwar ist das Problem, dass der Nutzer über einen FileChooser ein Bild auswählen soll.
Dieses wird dann auch dank des ImageIcons im Fenster angezeigt. Allerdings möchte ich das ausgewählte Bild gleichzeitig auch mittels BLOB noch in die MySQL Datenbank speichern. Das bloße speichern wäre jetzt auch nicht das Problem, allerdings weiß ich im Moment nicht, ob ich a) das ImageIcon in der DB speichern kann b) Wie ich den Inhalt des ImageIcons an die Methode übergeben soll, die das Bild in der DB speichert?
Methode zum auswählen und anzeigen des Bilds:
Java:
protected void BildSuchen() {
		JFileChooser fc = new JFileChooser();
		FileFilter filter = new FileNameExtensionFilter("Bilder", "gif", "png",
				"jpg");
		fc.setAcceptAllFileFilterUsed(false);
		fc.setFileFilter(filter);
		fc.showOpenDialog(null);
		File f = fc.getSelectedFile();
		Image image = java.awt.Toolkit.getDefaultToolkit().getImage(
				f.getAbsolutePath());
		ImageIcon ic = new ImageIcon(image);
		ic.setImage(ic.getImage().getScaledInstance(212, 148,
				Image.SCALE_SMOOTH));
		lblbild.setIcon(ic);
		try {
			bildindb();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
Methode zum Schreiben:
Java:
protected void bildindb() throws ClassNotFoundException, SQLException, IOException {
	    Class.forName("com.mysql.jdbc.Driver");
		final String CONNECTION = "jdbc:mysql:.....";
	    Connection connection = DriverManager.getConnection(
		CONNECTION, "....", "...");
		String INSERT_PICTURE = "insert into ... (Bild) values";

	    FileInputStream fis = null;
	    PreparedStatement ps = null;
	    try {
	      connection.setAutoCommit(false);
	      File file = new File("");
	      fis = new FileInputStream(file);
	      ps = connection.prepareStatement(INSERT_PICTURE);
	      ps.setString(1, "001");
	      ps.setString(2, "name");
	      ps.setBinaryStream(3, fis, (int) file.length());
	      ps.executeUpdate();
	      connection.commit();
	      
	    } finally {
	      ps.close();
	      fis.close();
	    }
	  }
Dankeschön!
 
E

EllaStar

Gast
Du meinst also das ausgewählte Bild?
Wie soll man das dann umsetzen, also wie mache ich ihm klar, welches Bild er in die DB speichern soll?
 
E

EllaStar

Gast
Ja den InputStream habe ich ja bereits. Ich müsste also nur noch das File in den InputStream bringen. Nur wie bekomme ich f aus
Java:
protected void BildSuchen()
in
Java:
protected void bildindb()
?
Sorry wenn ich mich etwas blöd anstelle aber ich bin schon so lange am probieren und bekomme es nicht hin.
 

Timothy Truckle

Top Contributor
Sorry wenn ich mich etwas blöd anstelle aber ich bin schon so lange am probieren und bekomme es nicht hin.
ok, weil ich gerade gute Laune habe...
Java:
void persistImage(String fileName) throws Exception{
  PreparedStatement insertBlob = getDbConnection().prepareStatement("insert into table_with_blob (blob_attr_name) values (?)");
  insertBlob.setBlob(1,new FileInputStream(fileName)); // 1 gilt für Oracle, könnte bei MySql auch 0 sein?
  insertBlob.executeUpdate();
}

bye
TT
 

Spin

Top Contributor
Hallo EllaStar,

musst du wirklich deine Bilder in die Datenbank speichern ? Das würde ich dir nicht empfehlen, weil Bilder in der Datenbank rieisige Probleme machen. Mag sein dass du hier nur von zwei, drei Bilder sprichst, aber bei einer Anwendung mit 20.000 Bilder ist dein jetziges Design definitiv die falsche Entscheidung ;)

Was hälst du denn davon dein hochgeladenes Bild in einen resources/ Ordner zu speichern und den Pfad zum Bild dein ImageIcon zu geben ? Weiter spiecherst du nur den Pfad zum Bild und nicht das ganze Bild.
Die Datenbank bleibt schlank und das Design ist für weitere Anpassungen besser geeignet.

Ich wollte dir nur kurz eine andere Möglichkeit aufzeigen, wie Sie auch überall ausgeübt wird ;)
 

Timothy Truckle

Top Contributor
Hallo EllaStar,

musst du wirklich deine Bilder in die Datenbank speichern ? Das würde ich dir nicht empfehlen, weil Bilder in der Datenbank rieisige Probleme machen. Mag sein dass du hier nur von zwei, drei Bilder sprichst, aber bei einer Anwendung mit 20.000 Bilder ist dein jetziges Design definitiv die falsche Entscheidung ;)
Das hängt unter anderem von der Größe der Bilder ab....

Was hälst du denn davon dein hochgeladenes Bild in einen resources/ Ordner zu speichern und den Pfad zum Bild dein ImageIcon zu geben ? Weiter spiecherst du nur den Pfad zum Bild und nicht das ganze Bild.
Die Datenbank bleibt schlank
Die bedingung dafür ist, dass die Anwendung auf einem Zentralen Server läuft. Andernfalls ist nämlich ein weiterer Netzwerkzufriff notwendig, um die Bilddatei auf den Client zu laden. Innerhalb eines LANs sicher kein Problem, aber für eine Android-App würde ich dass ehr nicht machen...

und das Design ist für weitere Anpassungen besser geeignet.
Die Lösung hat ihre Daseinsberechtigung. Aber sie erhöht die Komplexität.
Sie als flexibler zu bezeichnen halte ich für mutig. Wie gehst Du beispielsweise damit um wenn die Anwendung gegen verschieden Server eines Clusters arbeiten soll?
Allein, dass man diese Frage stellen musss widerlegt Deine Behauptung.

bye
TT
 
E

EllaStar

Gast
musst du wirklich deine Bilder in die Datenbank speichern ?

Nein nicht zwangsläufig. Es geht nur um einige Bilder. Im Prinzip ist mir die endgültige Umsetzung, ob über Pfad oder Bild in DB relativ egal, da das Programm nur für ein kleines Projekt genutzt wird und es mir hauptsächlich darauf ankommt, irgendwie das Bild zu speichern :)
 
E

EllaStar

Gast
Okay aber dann stehe ich doch im Endeffekt wieder vor dem gleichen Problem.
Ich kann mir ja mit
Java:
getSelectedFile()
den Dateipfad holen, aber dann hab ich ja wieder ein File, dass ich von der einen Methode in die andere bringen muss, um sie in die DB zu laden?!
 

Timothy Truckle

Top Contributor
Okay aber dann stehe ich doch im Endeffekt wieder vor dem gleichen Problem.
Ich kann mir ja mit
Java:
getSelectedFile()
den Dateipfad holen, aber dann hab ich ja wieder ein File, dass ich von der einen Methode in die andere bringen muss, um sie in die DB zu laden?!
Jetzt stell Dich doch mal nicht so Blöd an und schau in die API von [JAPI]FileInputStream[/JAPI] oder von [JAPI]File[/JAPI] ob da vielleicht irgendwas zusammen passen könnte...

Noch mehr Code schenke ich Dir jedenfalls nicht.

bye
TT
 

Spin

Top Contributor
Hallo EllaStar,

ich schätze das der Kommentar von TT nicht so gemeint war.
Ich finde im Netz viele Beispiele:

Schau mal:
FileChooser Example 1
Example 2

Im zewiten Beispiel findest du :
Java:
 //Handle save button action.
    } else if (e.getSource() == saveButton) {
      int returnVal = fc.showSaveDialog(SwingFileChooserDemo.this);
      if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();

        // speicher bei dir lokal
        bildaufharddisk(file)

        //This is where a real application would save the file.
        log.append("Saving: " + file.getName() + "." + newline);
      } else {
        log.append("Save command cancelled by user." + newline);
      }
      log.setCaretPosition(log.getDocument().getLength());
    }
  }

Hier kommt deine Frage ins spiel ;)

Schau mal hier :
File

Java:
// das file übergeben an die 
protected void bildaufharddisk(File file) {
// hier schreiben , probier dich aus und wir lassen uns überraschen :toll:

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
M Bild einbinden Java Basics - Anfänger-Themen 7
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
T Bild laden Java Basics - Anfänger-Themen 7
R Bild in GUI Java Basics - Anfänger-Themen 11
D Eclipse Juno zeigt Bild nicht bei Run Java Basics - Anfänger-Themen 3
Kenan89 Bild mit jar öffnen Java Basics - Anfänger-Themen 4
S Problem bei Bewegung von einem Bild! Java Basics - Anfänger-Themen 2
J Bild mit transparenter Farbe Java Basics - Anfänger-Themen 10
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
J Bild einfügen Java Basics - Anfänger-Themen 3
T ASCII Art von Bild erstellen. Java Basics - Anfänger-Themen 32
E Bild OS-unabhängig einbinden mit URL Java Basics - Anfänger-Themen 4
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben