Convertire un byte array (byte[]) in un oggetto Image e’ molto semplice:
private Image convertToImage(byte[] source){ Image objImage = new Image(source); return objImage; }
Il contrario invece, convertire un oggetto Image in un byte[] non e’ proprio cosi’ immediaito. Ecco lo snippet che uso, che carica direttamente da una URL un’immagine e la memorizza in un byte[]. comodo magari da usare successivamente all’interno degli elementi di una jList.
private byte[] loadImageFromURL(String strUrl){ int intPos; String strFileExt; //guess file extension intPos = strUrl.lastIndexOf("."); if (intPos >= 0){ strFileExt = strUrl.substring(intPos + 1); }else{ //assign default jpg extension strFileExt = "jpg"; } try { //load the image from the Internet ImageIcon objImageIcon = new ImageIcon(new URL(strUrl)); //wait the loading of the image MediaTracker objMediaTracker = new MediaTracker(lstContacts); objMediaTracker.addImage(objImageIcon.getImage(), 0); objMediaTracker.waitForID(0, 5000); //convert the image BufferedImage objBI = new BufferedImage(objImageIcon.getIconWidth(), objImageIcon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = objBI.createGraphics(); g2.drawImage(objImageIcon.getImage(), 0, 0, null); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(objBI, strFileExt, baos); return baos.toByteArray(); } catch (MalformedURLException ex) { Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex); return null; } catch (IOException ex) { Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex); return null; } catch (InterruptedException ex) { Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex); return null; } }