|
|||||||
|
|
|
![]() |
|
|
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 19: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: 07:14.




















