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

    visualizzazione immagine per qualche decina di millisecondi

    Ciao a tutti,

    vorrei scrivere uno script per visualizzare un'immagine ogni 30-40 millisecondi circa.
    L'immagine dovrebbe visualizzarsi per 13-20 millisecondi circa.

    Quindi:
    - si apre l'immagine
    - dopo 13-20 ms si chiude l'immagine
    - dopo 30-40 ms si apre di nuovo l'immagine
    - dopo 13-20 ms si chiude l'immagine
    - etc

    Ho scritto il seguente codice in python ma ho rallentato il processo per testare se
    effettivamente l'immagine viene visualizzata e mi sembra che il tempo non sia abbastanza.
    Mi sembra che il programma di visualizazione dell'immagine si apra ma non abbia abbastanza tempo
    per visualizzare l'immagine. Il risultato e' che vedo solo lo sfondo grigio dell'applicazione display ma non l'immagine.

    codice:
     
    from PIL import Image
    import subprocess
    import time
    
    while True:
            p = subprocess.Popen(["display", "./red.png"])
            time.sleep(0.020) #20 ms
            p.kill()
            time.sleep(0.040) #40 ms
    Come posso fare? Secondo voi dovrei cambiare linguaggio, libreria... o magari dovrei fare uno script in gimp?
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  2. #2
    Sicuramente se lanci un processo esterno non ce la fai, devi mostrare/nascondere l'immagine direttamente da dentro la tua applicazione (e già lì sei comunque al pelo, i redraw "normali" delle finestre non è detto che siano sempre così veloci). Secondo me la cosa più intelligente che puoi fare è creare un video in cui compare/scompare la tua immagine negli intervalli che desideri, i player video passano per interfacce accelerate che gestiscono tranquillamente frame rate del genere.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Grazie mille MItaly per la risposta. Era esattamente quello che stavo cercando di capire. Quello che vorrei fare pero' e' visulizzare un immagine per un periodo di tempo brevissimo ma durante l'utilizzo del pc. Cioe' vorrei che l'immagine venisse messa in primo piano finche' sto lavorando al pc per scomparire qualche millisecondo dopo. Immagino che anche il passaggio tra background e foreground abbia lo stesso problema di aprire/chiudere l'immagine.

    Immagino esista un qualche modo per visualizzare un'immagine in primo piano per pochissime decine di millisecondi ma non saprei proprio dove andare a guardare. Per esempio (su linux) ho provato a guardare se esiste un modo per dire ad X11 di farlo ma ancora non ho avuto successo (piu' in dettaglio sto guardando se la visualizzazione nella root window di xloadimage puo' essere utile).
    Ultima modifica di Mercuzio; 02-02-2016 a 09:20
    Quanti programmatori sono necessari per cambiare una lampadina?
    Nessuno, e' un problema hardware.

  4. #4
    Copiare un'immagine sul device-schermo "grezzo" di norma si può fare (di nuovo, senza eccessive garanzie sulle tempistiche).
    Con PyQt lo puoi fare in maniera abbastanza semplice:
    - all'inizio, carica la tua immagine in una QImage;
    - metti da parte il contenuto attuale del desktop copiandolo in una QPixmap (QPixmap.grabWidget(app.desktop()), dove app è la tua QApplication);
    - crea un QPainter sul "desktop widget" (app.desktop()) e disegnaci sopra la tua immagine;
    - passato il tempo che desideri, ri-copia la pixmap salvata (dovrebbe funzionare anche fare semplicemente app.desktop().update(), ma
    è sicuramente più lento, visto che di fatto viene mandata in broadcast a tutte le applicazioni la richiesta di ridisegnare la loro area client).
    Amaro C++, il gusto pieno dell'undefined behavior.

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.