Cabina fotografica webcam gratuita
Scatta foto con la tua webcam direttamente nel browser. Applica filtri, un timer e salva i tuoi scatti localmente.
Come funziona
- Autorizza la fotocamera: clicca su «Avvia la fotocamera» e concedi l'accesso quando il browser te lo chiede.
- Regola le opzioni: scegli un filtro, attiva la modalità specchio e definisci un timer se desideri posizionarti prima dello scatto.
- 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:
- width / height: accettano un numero letterale o un oggetto con
min,ideal,max,exact.idealè il valore predefinito pratico; il browser si avvicina il più possibile senza rifiutare le fotocamere che non riescono a corrispondere esattamente.exactrifiuta se l'hardware non può fornire il valore richiesto. - facingMode:
'user'per la fotocamera frontale (selfie) o'environment'per quella posteriore. Sui laptop con una sola fotocamera il constraint viene ignorato silenziosamente; sugli smartphone è il modo più pulito per scegliere l'obiettivo giusto senza enumerare i dispositivi. - frameRate: la maggior parte delle webcam è limitata a 30 fps; alcune fotocamere USB esterne arrivano a 60.
- deviceId: per scegliere un dispositivo specifico dopo l'enumerazione con
navigator.mediaDevices.enumerateDevices(). Sfumatura cruciale:labelè una stringa vuota finché l'utente non ha concesso almeno un'autorizzazione alla fotocamera in questa sessione, quindi un menu a discesa «scegli la fotocamera» che viene eseguito prima di qualsiasi concessione di autorizzazione mostrerà ID senza etichetta. Il menu a discesa Fotocamera qui sopra aggira questo problema popolandosi solo dopo che Start Camera ha avuto successo.
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
- Foto profilo rapide per Slack, Discord, GitHub, social media, senza installare un'app webcam separata.
- Foto in stile passaporto / documento d'identità scattate a casa per moduli online (rinnovo della patente, richieste di visto). La garanzia di privacy offerta dal browser è rilevante proprio qui, poiché caricare una foto del viso su un servizio di terze parti è scomodo.
- Anteprime per videoconferenze: verificare l'illuminazione, l'inquadratura e l'aspetto di uno sfondo virtuale prima di partecipare a una chiamata Zoom o Teams.
- Presenze a scuola e in smart working: quando un insegnante o un datore di lavoro richiede un selfie rapido per confermare la presenza.
- Scatti di riferimento per arte e design: una posa della mano, una foto di un oggetto per un modello 3D, un abbozzo di autoritratto.
- Photo booth leggero agli eventi: collegare un laptop con una pagina dedicata affinché gli ospiti possano scattare selfie senza installare app.
- Mockup e prototipazione: i designer che costruiscono flussi con un passaggio «scatta un selfie» hanno bisogno di una pagina di test rapida.
- Demo educative: insegnanti che mostrano agli studenti come funziona la moderna API Camera del web.
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:
- NotAllowedError: tu (o una sessione precedente) hai negato l'autorizzazione, oppure la pagina non è su HTTPS. Controlla il menu delle autorizzazioni del sito nella barra degli indirizzi e assicurati che Fotocamera sia impostato su Consenti o Chiedi.
- NotFoundError: nessun dispositivo corrispondente. Si verifica più spesso quando si richiede
facingMode: 'environment'conexactsu un desktop privo di fotocamera posteriore. - NotReadableError: l'hardware è in uso da un'altra app. Zoom, Teams, OBS o un'altra scheda del browser ha la fotocamera aperta. Chiuderli e riprovare.
- OverconstrainedError: i constraint non possono essere soddisfatti. Rimuovere i requisiti
exacto ridurre la risoluzione. - TypeError: l'oggetto constraints era vuoto. La chiamata deve richiedere almeno uno tra audio e video.
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.