MySQL Bilddatei in MYSQL DB abspeichern, ohne lokal auf HDD zwischenzuspeichern

Murx

Mitglied
Guten Tag zusammen.

Die Überschrift beschreibt das Problem eigentlich hinlänglich.

Ich extrahiere aus HTML Seiten Bilddateien und speichere diese lokal ab und danach sollen diese in eine DB inserted werden.

Java:
BufferedImage cpimg= ImageIO.read(new URL ("http://lexikon.freenet.de/images/commons/4/44/Abraham_Lincoln_head_on_shoulders_photo_portrait.jpg"));

                        Random generator2 = new Random();

                        int i = generator2.nextInt();
                        int g=3;
                        String s1 = "ww";
                        String s2 = "eee";
                        String fertig = ""+i+g+s1+s2+".png";
                        String dir = "C:\\Users\\daniel\\Desktop\\testbilder\\";
                        String gesamt = dir + fertig ;
                        System.out.println (gesamt);
			File f1 = new File(gesamt);

			ImageIO.write(cpimg, "png", f1);

		}


Hat jemand eine Idee für einen direkten Weg?

Besten Dank
 
wie speicherst du bisher denn von Datei in DB, mit Stream, Blob?
dann kannst du den Stream auch an ImageIO übergeben statt File
 
ok, ist bisschen komplizierter als gedacht, vor allem wenn man nicht das gesamte Bild cachen will, aber das dürfte bei dir nicht so wichtig sein?
dann andererseits Festplatte auch nicht schlimm..,
wenn wirklich direkt Byte für Byte in die DB geschrieben werden soll, brauch man parallel laufende Threads.. (Methode 2 + 3 im Link unten)

einfache Alternative zur Festplatte: lass ImageIO alles in einen ByteArrayOutputStream schreiben,
hole dir daraus das byte[] und definieren einen neuen ByteArrayInputStream für die DB (Methode 1)

Convert a Java OutputStream to an InputStream

---

edit:
> public void imageWrite(File file)
wird die Methode dann natürlich nicht mehr heißen in deinem Quellcode, du musst schon diverses anpassen,
gewisse Kenntnisse einer Programmiersprache namens Java haben
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben