Cabina fotografica webcam gratuita

Scatta foto con la tua webcam direttamente nel browser. Applica filtri, un timer e salva i tuoi scatti localmente.

Le tue foto non lasciano mai il tuo dispositivo

Come funziona

  1. Autorizza la fotocamera: clicca su «Avvia la fotocamera» e concedi l'accesso quando il browser te lo chiede.
  2. Regola le opzioni: scegli un filtro, attiva la modalità specchio e definisci un timer se desideri posizionarti prima dello scatto.
  3. Cattura e scarica: clicca su «Scatta la foto». Gli scatti si accumulano nella galleria, pronti per essere scaricati individualmente o in lotto.

Domande frequenti

Le mie foto vengono inviate online?

No. Tutta l'elaborazione avviene nel tuo browser tramite l'API MediaDevices; le immagini non lasciano mai il tuo dispositivo. Nessun server vede né memorizza il tuo flusso video.

Perché la fotocamera non si avvia?

Verifica di aver autorizzato l'accesso alla fotocamera nelle impostazioni del browser, che il sito sia servito tramite HTTPS (obbligatorio per l'accesso alla fotocamera) e che nessun'altra applicazione la stia già utilizzando.

Posso scegliere tra più webcam?

Sì. Se sono collegate più fotocamere, il selettore «Fotocamera» le elenca tutte: webcam integrata, webcam USB esterna, fotocamere virtuali, ecc.

Come funzionano davvero le webcam nel browser

L'accesso alla fotocamera nel browser è governato dalla specifica W3C Media Capture and Streams. Il punto di ingresso è navigator.mediaDevices.getUserMedia(): una funzione che la pagina chiama con un oggetto constraints che descrive il tipo di stream desiderato. Il browser mostra la richiesta di autorizzazione; se si concede, la funzione restituisce un oggetto MediaStream contenente una o più tracce video. La pagina associa quello stream a un elemento <video> tramite video.srcObject = stream, il feed in diretta appare sullo schermo e catturare un frame diventa semplicemente una questione di disegnare il video su un <canvas> HTML5 nel momento in cui l'utente fa clic su Scatta foto. Il canvas viene esportato tramite canvas.toBlob('image/jpeg'), che diventa il JPG scaricabile. Nessun frame lascia mai il dispositivo: l'intera pipeline si trova nel processo del browser.

Il getUserMedia basato su Promise è stato distribuito senza prefisso in Chrome 53 (settembre 2016) e Firefox 36 (febbraio 2015). Safari era il ritardatario: l'accesso alla webcam dalle pagine web non è arrivato su iOS fino a iOS 11 (settembre 2017) e il target stabile moderno è iOS 14.5 o versioni successive. Nel 2026 l'API è essenzialmente universale: caniuse indica un supporto globale superiore al 97%.

Perché HTTPS è obbligatorio

getUserMedia è limitato ai «contesti sicuri»: HTTPS, localhost su desktop o file:// in Firefox. Le pagine servite tramite HTTP non possono accedere alla fotocamera; la chiamata viene rifiutata con un NotAllowedError. Questo è il bug di deployment più comune per le varianti self-hosted di questo tipo di strumento ed è applicato uniformemente da ogni browser moderno. Su mobile le restrizioni sono ancora più severe: non esiste l'esenzione per localhost sugli smartphone, quindi testare strumenti con fotocamera su un server di sviluppo locale richiede un tool di tunnelling come ngrok o un reverse proxy con TLS.

Constraints: come richiedere la fotocamera giusta

L'oggetto constraints è la parte più complessa dell'API. I parametri più comuni:

La spia della fotocamera è il tuo segnale di fiducia

Su un Mac con webcam del 2008 o successivo, il LED verde accanto alla fotocamera è collegato alla stessa linea di alimentazione del sensore. macOS e il firmware impongono che il LED sia acceso ogni volta che il sensore è alimentato: Apple ha progettato questa configurazione in modo che nemmeno il malware a livello di kernel possa spegnere il LED mentre la fotocamera registra. iOS implementa l'indicatore a punto arancione nella parte superiore dello schermo da iOS 14 (rilasciato nel settembre 2020), disegnato da un processo di sistema che l'app non può sopprimere. Le webcam Windows usano un approccio simile sulla maggior parte dei dispositivi moderni, anche se l'applicazione è meno universale: alcune vecchie webcam USB del 2010 avevano LED controllati via software. Su Linux varia in base all'hardware.

La conclusione: fidarsi del LED, non del sito web. Uno strumento puramente browser come questo può sinceramente promettere che nulla lascia il dispositivo, e la spia della fotocamera fornisce una conferma indipendente che la fotocamera è effettivamente spenta quando la pagina lo afferma. Il bug più comune negli strumenti webcam è dimenticare di chiamare stream.getTracks().forEach(t => t.stop()) alla chiusura; il sintomo è che la spia della fotocamera rimane accesa dopo che l'utente crede di averla spenta. Il pulsante Stop Camera su questa pagina lo chiama esplicitamente.

Quando usare uno strumento webcam nel browser

Il vantaggio rispetto a Photo Booth su macOS o all'app Fotocamera su Windows è che non si installa nulla e non si carica nulla: utile sui computer aziendali con restrizioni e sui chioschi condivisi dove non è possibile installare software.

Filtri: cosa offre la proprietà CSS filter

Il canvas HTML5 può applicare la sintassi dei filtri CSS tramite la proprietà ctx.filter. I filtri disponibili qui sopra usano le stesse primitive che qualsiasi regola CSS può applicare: grayscale(1) (desaturazione completa, equivalente a una proiezione di luminanza), sepia(1) (tono marrone caldo che imita le fotografie invecchiate), invert(1) (negativo del colore), blur(5px) (sfocatura gaussiana), brightness(1.4) (moltiplica l'intensità del pixel) e contrast(1.4) (ruota attorno al grigio medio). Sono stati accelerati via hardware in ogni browser sin da Chrome 53 / Firefox 35 / Safari 9.1.

Un dettaglio sottile ma importante: i filtri CSS applicati all'elemento <video> non si propagano al canvas. Per incorporare il filtro nel JPG salvato, lo stesso filtro deve essere impostato su ctx.filter prima di drawImage. Questa pagina lo fa, quindi l'anteprima sullo schermo corrisponde pixel per pixel al file salvato.

Errori comuni e cosa significano

Se Start Camera fallisce, il rifiuto viene restituito come DOMException con uno di questi nomi:

Altre domande

Perché la mia immagine è capovolta o di lato?

Alcune fotocamere Android riportano una rotazione fuorviante nei loro metadati EXIF. Il browser di solito applica la rotazione automaticamente prima che il frame video raggiunga il canvas, ma le versioni più vecchie di Samsung Internet e alcune WebView integrate saltano questo passaggio. Se gli scatti risultano di lato, provare a ruotare il dispositivo di 90° prima dello scatto oppure usare lo strumento Ruota immagine in seguito.

Perché il menu a discesa mostra «Camera 1, Camera 2» invece dei nomi?

Perché il browser non ha ancora ricevuto l'autorizzazione alla fotocamera. enumerateDevices() restituisce le etichette (es. «FaceTime HD Camera») solo dopo che l'utente ha approvato l'accesso almeno una volta nella sessione corrente; nel frattempo vengono restituiti solo ID opachi. Fare clic su Start Camera una volta, concedere l'accesso e il menu a discesa si aggiornerà con i nomi corretti.

La spia della fotocamera resterà accesa dopo aver chiuso la pagina?

No. Il pulsante Stop Camera interrompe esplicitamente ogni traccia dello stream e i browser moderni interrompono anche le tracce quando la scheda viene nascosta o la pagina viene scaricata. Se la spia LED della fotocamera rimane accesa dopo aver chiuso una scheda, si tratta di un bug da segnalare: nella maggior parte dei casi significa che la pagina non ha chiamato la funzione di cleanup. Con questo strumento, fare clic su Stop Camera o chiudere la scheda rilascia immediatamente l'hardware.

Posso registrare video, non solo foto?

Non con questo strumento, che acquisisce solo foto statiche. La registrazione video richiede l'API MediaRecorder e produce file in WebM, MP4 o MKV a seconda del browser. La registrazione ha anche le proprie implicazioni sulla privacy (si archiviano quantità maggiori di filmati identificativi), quindi è un caso d'uso separato che vale la pena trattare con uno strumento dedicato.

Vengono inviati dati a un server?

No. Il flusso video viene consegnato direttamente dal sistema operativo al browser; la cattura del canvas e l'esportazione JPG avvengono tramite JavaScript localmente; la galleria vive nella memoria del browser e viene scaricata direttamente sul dispositivo. Nulla riguardante la fotocamera, il viso o le foto lascia la pagina.

Strumenti correlati