Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2020
    Messaggi
    3

    leggere RGB di un pixel dello schermo in java

    Buongiorno a tutti,
    sto cercando di scrivere un programma in java che dovrebbe leggere il colore di un pixel dello schermo per poi analizzarlo e far partire dei cicli/condizioni, ma non capisco come integrare quest'azione.
    Nel dettaglio l'idea è: sul mio schermo, dimmi a che colore corrisponde il pixel in posizione (200,200) e mettilo in una variabile (per poi inserire delle condizioni di analisi).
    Non servono cose sofisticate, mi basta capire se è nero, bianco, rosso, ecc; quindi anche senza alpha o altre cose.

    Potete aiutarmi?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da lucafkt Visualizza il messaggio
    sto cercando di scrivere un programma in java che dovrebbe leggere il colore di un pixel dello schermo per poi analizzarlo
    Sullo schermo ... dove? In una TUA finestra o in qualunque punto arbitrario sul desktop/schermo?
    Comunque, la classe java.awt.Robot ha il metodo

    public Color getPixelColor(int x, int y)

    (x/y relative allo schermo)

    E Robot offre anche la possibilità di "catturare" lo schermo in un BufferedImage, per farci poi altro di più specifico (es. salvarlo, ecc...).
    Ultima modifica di andbin; 27-04-2020 a 11:32
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2020
    Messaggi
    3
    Ottimo, lo provo immediatamente.
    Grazie mille

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2020
    Messaggi
    3
    Ok, sono riuscito a trovare i valori RGB del Pixel tramite le successive interrogazioni
    color.getRed()e lo stesso per green e blue.
    Solo per curiosità, sapete se ci sono altri modi per leggere il risultato? Magari in una variabile unica (esadecimale?)

    Grazie

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Un modo è questo:
    codice:
    int red = color.getRed();
    int green = color.getGreen();
    int blue = color.getBlue();
    
    String hex = String.format("#%02x%02x%02x", red, green, blue);

    Oppure
    codice:
    String hex = String.format("#%06x", Integer.valueOf(color.getRGB() & 0x00FFFFFF));

    Ciao.
    Ultima modifica di LeleFT; 28-04-2020 a 09:14
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da lucafkt Visualizza il messaggio
    Magari in una variabile unica (esadecimale?)
    A quale scopo? Per informazione verso l'utente o qualcosa del genere? Allora sì, va bene/ha senso. LeleFT ti ha fatto l'esempio.

    @LeleFT: quel Integer.valueOf in realtà non servirebbe.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Tag per questa discussione

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.