Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Java]Salvare immagine

  1. #1
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    [Java]Salvare immagine

    Il mio programma dovrebbe salvare un'immagine acquisita sotto forma di ImageIcon, girando qua e là ho tirato fuori questo codice:
    codice:
    ImageIcon imm;
    //...
    //...
    try{
        f = new File("..."); 
        Image image = imm.getImage();
        BufferedImage bufImage = (BufferedImage)image;
        Graphics2D g = bufImage.createGraphics();
        ImageIO.write(bufImage,"JPG",f);
       }
    catch(Exception e){..}
    //....
    Mi da come errore a run-time:
    codice:
    java.lang.ClassCastException: sun.awt.windos.WImage
    Che non riesco a capire.....
    Ora poichè il codice l'ho un pò assemblato "scopiazzando" a destra e a manca (ad esempio nn capisco a che servirebbe bufImage.createGraphics") mi chiedo (vi imploro...) dove è l'errore??

    Grazie

    A stasera!

    Ora vado a studià sigh sigh
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Nessuno
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Consultando le API ho modificato il codice:
    codice:
     
    ImageIcon imm;
    //...
    //...
    try{
        f = new File("..."); 
        Image image = imm.getImage();
        BufferedImage bufImage = new BufferedImage(imm.getIconWidth(),imm.getIconHeight(),BufferedImage.TYPE_BYTE_INDEXED);
        Graphics2D g = bufImage.createGraphics();
        ImageIO.write(bufImage,"JPG",f);
       }
    catch(Exception e){..}
    //....
    Ora nn genera più l'errore di prima, e crea il file ma.....e vuoto!!
    0Kb di file che nn contiene nulla??
    Helpatemi!
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    Dato che l'ImageIO.write ritorna un boolean , controlla se è true o false.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    devi riempirlo con l'immagine
    public void setData(Raster r)

  6. #6
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Infatti, ci ero arrivato ma nn sapevo che metodo usare....questo oggetto Raster come lo tiro fuori dalla mia immagine?
    Vabbè ora vi lascio, vado a fare l'esame....a stasera!

    Ciao



    PS: FORZA ROMA!!!!!!!!!:metallica
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  7. #7
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    codice:
    public static BufferedImage toBufferedImage(Image image) {
        BufferedImage bimage = null;
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        try {
            int transparency = Transparency.BITMASK;
    
            // Create the buffered image
            GraphicsDevice gs = ge.getDefaultScreenDevice();
            GraphicsConfiguration gc = gs.getDefaultConfiguration();
            bimage = gc.createCompatibleImage(
                image.getWidth(null), image.getHeight(null), transparency);
        } catch (HeadlessException e) {
            // The system does not have a screen
        }
    
        if (bimage == null) {
            // Create a buffered image using the default color model
            int type = BufferedImage.TYPE_INT_ARGB;
            bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
        }
    
        // Copy image to buffered image
        Graphics g = bimage.createGraphics();
    
        // Paint the image onto the buffered image
        g.drawImage(image, 0, 0, null);
        g.dispose();
    
        return bimage;
    }
    caruccio

  8. #8
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Grazie mille...proverò e...studierò!!

    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  9. #9
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    Grazie

    Perfetto, il codice funziona benissimo, anche se, per visualizzare correttamente le immagini ho dovuto sostituire:
    codice:
    int transparency = Transparency.BITMASK;
    
    con:
    
    int trasparency = Transparency.OPAQUE;
    Bah...
    Comunque la questione è che tutto va bene se il file è JPG, ma ad esempio un'immagine GIF non riesce a salvarmela (crea un file vuoto)...mi è venuto il dubbio che vada cambiata la costante:
    TYPE_INT_ARGB (ma non sò come.....)

    Qualche idea?
    Grazie
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

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.