Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    22

    [Java] Salvare in file .png l'icona di una jLabel

    Salve a tutti,
    ho un problema nel salvare l'icona contenuta nella JLabel in un file .png o .jpg, meglio il primo. Possibilmente senza l'uso del JPEGImageEncoder che dai pc dell'universita' da problemi in esecuzione restituendo un NullPointerException e non salvando il file (premetto che sul mio computer il tutto fuziona con lo stesso codice). Dato che dovro' discutere il progetto dai pc di scuola vorrei chiedere consiglio su come ovviare il problema..

    codice:
    ImageIcon miaImmagine = new ImageIcon(nByte); //nByte e' un array di byte
    jLabel1.setIcon(miaImmagine);
    File immaginePng = new File("immagineGraph.png");
    da qui in poi ho problemi nel proseguire

    Avevo letto qualcosa riguardante il BufferedImage, ma non ho capito molto

    Grazie in anticipo per i suggerimenti


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [Java] Salvare in file .png l'icona di una jLabel

    Originariamente inviato da superiso
    codice:
    ImageIcon miaImmagine = new ImageIcon(nByte); //nByte e' un array di byte
    jLabel1.setIcon(miaImmagine);
    File immaginePng = new File("immagineGraph.png");
    da qui in poi ho problemi nel proseguire

    Avevo letto qualcosa riguardante il BufferedImage, ma non ho capito molto
    Per scrivere le immagini c'è nel framework (da Java 1.4) la API ImageIO. Vedi sul mio blog un post dedicato proprio alla lettura/scrittura di immagini in Java SE.

    Il punto però è un altro. La ImageIO si aspetta per la scrittura un RendererImage (l'unica implementazione è BufferedImage). Ma il Image incapsulato nel ImageIcon NON è di certo un BufferedImage ma una immagine del Toolkit.

    Pertanto devi creare un BufferedImage, prendi il suo Graphics, ci disegni sopra il tuo Image (che devi estrarre dal ImageIcon), fai un dispose() del Graphics, quindi puoi passare il BufferedImage ad uno dei write() di javax.imageio.ImageIO.

    Per i dettagli vedi javadoc.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.