Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Desktop scrennshot

    sua una rivista ho trovato questo spezzone di codice che dovrebbe effettuare lo screenshot del desktop:
    codice:
    Robot robot = new Robot();
    int x = 100;
    int y = 100;
    int width = 200;
    int heigth = 200;
    Rectangle area = new Rectangle(x, y, width, heigth);
    BufferedImage buff = robot.createScreenCapture(area);
    area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    buff = robot.createScreenCapture(area);
    ci sono un paio di cose che nn ho capito.
    Prima di tutto Robot a che serve??
    ho letto la documentazione sulle api ma nn ho ben afferrato.

    poi, che mi manca per salvare lo screenshot da qualche parte??
    così com'è nn sembra far nulla, immagino di dover usare un oggetto File per salvare area da qualche parte.....

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

    Re: [Java] Desktop scrennshot

    Originariamente inviato da fermat
    Prima di tutto Robot a che serve??
    È una classe di AWT dedicata a controllare o "automatizzare" (da qui forse il nome "Robot") azioni con mouse/tastiera/schermo.

    Originariamente inviato da fermat
    poi, che mi manca per salvare lo screenshot da qualche parte??
    Hai un BufferedImage. L'unico modo per scrivere la immagine (es. su file) restando a livello di framework standard è usare la API ImageIO (package javax.imageio). Vedi anche il post sul mio blog: Lettura e scrittura delle immagini in Java SE
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ok adesso vado e leggo.avrei un'altra domanda.
    queste 4 righe:
    codice:
    Rectangle area = new Rectangle(x, y, width, heigth);
    BufferedImage buff = robot.createScreenCapture(area);
    area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    buff = robot.createScreenCapture(area);
    sono "duplicate" giusto??
    cioè nn mi servono tutte.
    da quanto ho capito ci sono due modi per calcolare l'area:
    -o a mano
    -o usando Toolkit

    e i due BufferedImage servono usare un metodo piuttosto che un altro.
    o nn ho capito nulla??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    codice:
    Rectangle area = new Rectangle(x, y, width, heigth);
    BufferedImage buff = robot.createScreenCapture(area);
    area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
    buff = robot.createScreenCapture(area);
    sono "duplicate" giusto??
    Beh, un conto è se vuoi imporre tu un rettangolo (crei tu un Rectangle con coordinate/dimensioni) e un altro conto è se vuoi che sia il framework a darti il rettangolo dello schermo. Ovviamente scegli la tecnica che vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok:
    codice:
    import java.awt.AWTException;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    
    public class Screen {
    
        public static void main(String[] args) throws AWTException, IOException {
            Robot robot = new Robot();
    //        int x = 100;
    //        int y = 100;
    //        int width = 200;
    //        int heigth = 200;
    //        Rectangle area = new Rectangle(x, y, width, heigth);
            Rectangle area = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            BufferedImage buff = robot.createScreenCapture(area);
            ImageIO.write(buff, "gif", new File("/Volumes/MATTE/screen.gif"));
        }
    }
    funziona bene.
    penso che come esercizio ci costruisco una gui sopra per decidere quale tipo di area scegliere, quale formato e dove salvare.
    grazie per le spiegazioni!!

    ps: il tuo blog finisce dritto dritto tra i miei preferiti .

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 © 2025 vBulletin Solutions, Inc. All rights reserved.