Hey,
ich habe mal wieder ein Problem beim Zusammenspiel Oracle Datenbank und einer embedded Java Klasse.
Ich möchte eine Image (als blob) aus der Datenbank an die Java Klasse übergeben, dort erfolgt dann ein resizen des Bildes auf die gewünschte Höhe und Breite und dann soll das Image wieder als blob zurück an die die aufrufenden Funktion übergeben werden.
Für das Resizen des Bildes habe ich bei www.codejava.net auch ein Beispiel gefunden, welches ein lokal liegendes Bild resized und wieder auf lokal ablegt.
Das Funktioniert lokal auch sehr gut. Mein Katzenbeispiel - Jpg wird auf 50% der Originalgröße (1024 x 811 WxH) also auf 512 x 405 verkleinert.
Dabei verringert sich natürlich auch die Dateigröße - in dem Fall von 192 KB auf 39 KB.
Mein angepasstes Programm (siehe Anhang HKRCALL.java) nimmt auch den aus der Datenbank übergebenen BLOB, ermittelt die Größe des Originalbildes,
berechnet 50 % der Breite udn Höhe und gibt dann letztendlich auch wieder ein blob zurück. Dieser wird dann wieder in einer Tabelle abgelegt.
Ich habe mal ein paar Ausgaben in mein Java Programm gebaut und lasse mir diese per dbms-Output mal während der Ausführung der PL/SQL Prozedur (welche dann wiederum die Java Klasse aufruft) ausgeben (s.u.)
Leider ist dieser blob nur 3955 Byte groß.
Wenn ich mir das zurückgegebene Bild von der Datebank mal herunterlade, ist das durchaus Jpeg und die Bildinformationen zeigen auch die Masse 512 x 405 an.
Leider ist das Bild schwarz.
Kann sich das vielleicht mal jemand anschauen, wo mein Fehler liegen könnte (ImageOutputStream ?)
Ich bin gerade am verzweifeln :-(
resizeJpegCall: Groesse des uebergebenen Blob: 194334
Original scaledWidth = 1024
Original scaledHeight = 811
50 % scaledWidth = 512
50 % scaledHeight = 405
resizeJpeg: BufferedImage outputImage
resizeJpeg: Graphics2D g2d = outputImage.createGraphics()
resizeJpeg: g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null)
resizeJpeg: g2d.dispose()
ImageIO.write(outputImage, JPG, ios)
Image resized successfully.
Image resized successfully.
Groesse des Return Blob: 3955
ich habe mal wieder ein Problem beim Zusammenspiel Oracle Datenbank und einer embedded Java Klasse.
Ich möchte eine Image (als blob) aus der Datenbank an die Java Klasse übergeben, dort erfolgt dann ein resizen des Bildes auf die gewünschte Höhe und Breite und dann soll das Image wieder als blob zurück an die die aufrufenden Funktion übergeben werden.
Für das Resizen des Bildes habe ich bei www.codejava.net auch ein Beispiel gefunden, welches ein lokal liegendes Bild resized und wieder auf lokal ablegt.
Das Funktioniert lokal auch sehr gut. Mein Katzenbeispiel - Jpg wird auf 50% der Originalgröße (1024 x 811 WxH) also auf 512 x 405 verkleinert.
Dabei verringert sich natürlich auch die Dateigröße - in dem Fall von 192 KB auf 39 KB.
Mein angepasstes Programm (siehe Anhang HKRCALL.java) nimmt auch den aus der Datenbank übergebenen BLOB, ermittelt die Größe des Originalbildes,
berechnet 50 % der Breite udn Höhe und gibt dann letztendlich auch wieder ein blob zurück. Dieser wird dann wieder in einer Tabelle abgelegt.
Ich habe mal ein paar Ausgaben in mein Java Programm gebaut und lasse mir diese per dbms-Output mal während der Ausführung der PL/SQL Prozedur (welche dann wiederum die Java Klasse aufruft) ausgeben (s.u.)
Leider ist dieser blob nur 3955 Byte groß.
Wenn ich mir das zurückgegebene Bild von der Datebank mal herunterlade, ist das durchaus Jpeg und die Bildinformationen zeigen auch die Masse 512 x 405 an.
Leider ist das Bild schwarz.
Kann sich das vielleicht mal jemand anschauen, wo mein Fehler liegen könnte (ImageOutputStream ?)
Ich bin gerade am verzweifeln :-(
resizeJpegCall: Groesse des uebergebenen Blob: 194334
Original scaledWidth = 1024
Original scaledHeight = 811
50 % scaledWidth = 512
50 % scaledHeight = 405
resizeJpeg: BufferedImage outputImage
resizeJpeg: Graphics2D g2d = outputImage.createGraphics()
resizeJpeg: g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null)
resizeJpeg: g2d.dispose()
ImageIO.write(outputImage, JPG, ios)
Image resized successfully.
Image resized successfully.
Groesse des Return Blob: 3955