|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
[JAVA] Convertire un oggetto Image in oggetto Blob
Qualcuno sa come convertire un oggetto di tipo Image in un oggetto di tipo Blob?
In rete ho trovato una soluzione, ma purtroppo è difettosa. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Oddio. Ho dato un'occhiata alla documentazione e mi pare una cosa strana. Image pare essere una classe astratta quindi al massimo intendi che il riferimento è di tipo Image ma avrà un oggetto di un sottotipo. E Blob è un'interfaccia. Boh, aspetta qualcuno che ne sa più di me
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
In realtà un mezzo sistema c'è, solo che bisogna passare da Image a byte[] e da byte[] a blob, ma è un po' un casino perché con i metodi che ho trovato io, l'immagine non viene memorizzata correttamente nel DB.
Ultima modifica di fbcyborg : 24-11-2009 alle 18:28. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
fbcyborg, la soluzione che hai trovato in linea di principio non é sbagliata: tramite ImageIO devi serializzare l'immagine su di un ByteArrayOutputStream, poi prendi l'array di byte[] e lo passi a Blob.setBytes
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
dimenticavo, solo gli oggetti BufferedImage possono essere serializzati da ImageIO, quindi all'occorrenza dovrai fare un bel blit che ricopi l'immagine originale in un tuo oggetto BufferedImage.
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Alla fine ho risolto convertendo prima in byte[] e poi in Blob.
Codice:
public static Blob ImageToBlob(BufferedImage i, String format){ return byteArrayToBlob(ImageToByte(i,format)); } public static byte[] ImageToByte(BufferedImage image, String format){ BufferedImage img = image; ByteArrayOutputStream baos = new ByteArrayOutputStream(1000); byte[] result = null; try { ImageIO.write(img, format, baos); baos.flush(); result = baos.toByteArray(); baos.close(); } catch (IOException e) { e.printStackTrace(); } return result; } private static Blob byteArrayToBlob(byte[] a){ Blob b = null; if (a == null) return null; try { b = new SerialBlob(a); } catch (SQLException e) { e.printStackTrace(); } return b; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:31.