Bild nicht Zwischenspeichern

Guillermo

Mitglied
Hallo,

ich habe ein kleines Programm geschrieben, das ein Bild verkleinert und dann auf einen FTP Server hochlädt.
Nur hab ich es jetzt so gelöst dass das Bild zwischengespeichert wird.
Wie kann ich das machen, dass das Bild nicht zwischengespeichert werden muss , und z.b. in den Arbeitsspeicher geladen wird damit ich es dann hochladen kann?

Hier mal die wichtigen Codeabschnitte:

Code:
//Bild laden
BufferedImage bsrc = ImageIO.read(new File(src));
//Bild verkleinern
BufferedImage bdest = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bdest.createGraphics();
AffineTransform at = AffineTransform.getScaleInstance(scaleFactor,scaleFactor);
g.drawRenderedImage(bsrc,at);

//Bild zwischenspeichern (Genau diesen Schritt will ich verhindern..)
ImageIO.write(bdest,"JPG",new File(dest));

//Gerade gespeichertes Bild hochladen
ftp.stor(new File(dest));

Habe gerade herausgefunden dass das iwie mit einem ImageOutputStream möglich sein soll, hab auch schon gesucht und herumprobiert, nur hat es nicht funktioniert.
Ich wäre für jede Hilfe sehr dankbar!

Gruß Guillermo
 
Zuletzt bearbeitet:
Java:
BufferedImage bufferedImage;
...verkleinern...
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", byteArrayOutputStream);
File file = new File();
FileOutputStream fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(ByteArrayOutputStream.toByteArray());
fileOutputStream.flush();
fileOutputStream.close();

Mit Sicherheit gibt es bessere Methoden. Falls deine stor() Methode das bytearray direkt benutzen kann, brauchst du das File-Objekt garnicht.
 
Uii, das sieht verdammt gut aus, ich werd es gleich mal ausprobieren, vielen Dank!
Leider hab ich keine Ahnung wie die "stor()" Methode aussieht, da dass eine FTP Bibliothek ist, die ich einfach iwo im Internet gefunden hab, war aber keine Doku dabei, hab auch schon selbst danach gesucht..
 
Das ist echt komisch, der meckert bei mir bei dem Ausdruck

Code:
File file = new File();

Darf man das dass man eine leere File erstellt?

//Nachtrag:

Ich hab jetzt die Datei so erstellt:
Code:
File file = new File();

Und dann funktionierts auch.. Aber komischerweiße wird die Datei trotzdem auf der Festplatte in dem Ordner erzeugt, warum das ?
 
Zuletzt bearbeitet:
Hab gerade gesehen, dass File keinen leeren Konstruktor hat, also macht meine Code keinen Sinn. Und da ein File-Objekt eine Datei darstellt, ist es eigentlich klar, dass sie irgendwo existieren muss. Deine stor-Methode braucht ja z.B. auch den Dateinamen. Wie heißt denn die FTP-Bibliothek? Vielleicht kann man das anders lösen. Ich bin aber kein Java-Spezialist.
 
Zuletzt bearbeitet:
Wie ginge das dann mit der temporären Datei?

Hab das nochmal entfernt, weil es im Endeffekt auch nur eine Datei auf der Festplatte erstellt.
Der Vollständigkeit halber: File.createTempFile

Die Funktion stor hat doch eine Überladung um auch mit einem Stream genutzt werden zu können. Also erstell dir einen Stream und schreibe das Bild per ImageIO.write da rein!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück