BufferedImage an PHP-Script senden

Status
Nicht offen für weitere Antworten.

Mott

Mitglied
Hallo!

Ich habe ein Bild mit Java eingelesen und modifiziert und möchte dieses nun mit einer Socketverbindung (HTTP Upload) an ein php-script senden.

Meine Frage ist nun wie ich praktisch die Bytes des Bildes aus dem BufferedImage bekomme damit ich diese an meinen String für den HTTP-Header und Body anhaengen kann um eben einen Dateiupload zu machen.

Das ganze soll in einem Applet laufen d.h. ich habe auch nicht die Möglichkeit das modifizierte BufferedImage in eine Datei zu schreiben, dann erneut einzulesen und dann erst hochzuladen?

Java ist nicht wirklich mein Spezialgebiet 🙂

Danke für alle Antworten!
 
Hoi,

einfachster Weg ist, die HTTP-Klassen von apache zu verwenden und einen POST-Befehl an Dein PHP-Skript zu senden. Dein PHP Skript muss die Variable (Byte Array) in ein Image umwandeln, fertig.

greetz
SLi
 
Danke für die Antwort.
Die Verbindung und das Senden eines HTTP-Requests funktioniert ja doch ich verstehe noch nicht ganz wie das mit dem Byte Array funktioniert.,

Also ich ein Objekt vom Typ BufferedImage und wie erstelle ich jetzt daraus ein Byte Array?
Evlt. Beispiel-Code wäre net! Danke!

MfG
 
Hoi,

naja Du sendest ja ein Bild.
Das musst Du iregndwie durch den Stream kriegen, was mit einem byte Array geht. Guck Dir mal die methodenvorschläge bei einem bufferedImage/bzw. Image an.

Habe leider keine IDE zur Hand, deshalb auch keinen code und keine Methoden.

Das byteArray wird im POSt Request im Body Bereich bereitgehalten und kann vom PHP Skript mittels Variablen namen ausgelesen werden. Mit dem empfangenen byte Array kannst Du dann über die image Funktionen von PHP wieder ein bild machen.

greetz
SLi
 
Naja derzeit sieht meine Methode zum verkleinern des Bildes so aus:

Code:
  private BufferedImage resizeImage (BufferedImage sourceImage, int maxWidth) throws IOException {
        
        if (sourceImage.getWidth () > maxWidth) {
            int width = maxWidth;
            int height = (int)(sourceImage.getHeight()*((double)maxWidth/(double)sourceImage.getWidth()));
            
            BufferedImage targetImage = new BufferedImage (width, height, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = targetImage.createGraphics();
            g.drawImage (sourceImage, 0, 0, width, height, null);
            
            return targetImage;
        }
        
        return sourceImage;
    }

In meiner Uploadfunktion steht dann der Aufruf BufferedImage upImage = objekt.resizeImage(ImageIO.read(...), 1200);

Genau dieses "upImage" moechte ich jetzt hochladen... d.h. ich habe jetzt nirgendwo ein ByteArray?

Bin da irgendwie verlorgen. Danke für eure Hilfe!

MfG
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben