# BufferedImage an PHP-Script senden



## Mott (15. Apr 2008)

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!


----------



## sliwalker (16. Apr 2008)

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


----------



## Mott (16. Apr 2008)

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


----------



## sliwalker (16. Apr 2008)

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


----------



## Mott (16. Apr 2008)

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


```
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


----------

