Converta pixel RGB in grigio con luminanza ponderata
Trasformi valori di rosso, verde e blu in un grigio fedele a come l'occhio percepisce la luminosità: il rosso puro diventa 76, il verde puro 150 e il blu puro 29, mentre un grigio neutro di 128 resta 128. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Converta campioni RGB di un’immagine in scala di grigi senza caricare file né dipendere da un decoder. Fornisca un array ordinato di pixel con i canali rosso, verde e blu; riceverà lo stesso numero di pixel con tutti e tre i canali impostati sul grigio ponderato per luminanza. Il calcolo privilegia il verde, poi il rosso e il blu, rappresentando la luminosità percepita meglio di una media semplice. Ogni canale viene verificato: pixel incompleti, valori non numerici o esterni all’intervallo da 0 a 255 generano un errore esplicito.
Prepari record RGB completi
Deve essere un array non vuoto e ogni elemento deve essere un oggetto con i nomi canonici r, g e b. I canali possono essere interi o frazionari, ma devono essere finiti e compresi tra 0 e 255 inclusi. Il convertitore richiede ogni canale.
Non presume mai zero, non copia un altro canale e non salta un pixel, perché ciò modificherebbe la luminosità e la corrispondenza posizionale. Una richiesta accetta al massimo centomila campioni; suddivida immagini più grandi in blocchi deterministici. L’interfaccia elabora campioni già decodificati, non byte PNG, JPEG o WebP.
Comprenda il calcolo ponderato
Per ogni campione, il grigio è l’intero più vicino a 0.299 per rosso più 0.587 per verde più 0.114 per blu. I coefficienti sommano a uno, mantengono neutri i pixel neutri e riflettono la maggiore sensibilità visiva al verde. Una media semplice può rendere il blu troppo chiaro e il verde troppo scuro.
Dopo un solo arrotondamento, il valore viene scritto in r, g e b, creando un grigio RGB senza dominante. La risposta include conteggio e formula per agevolare i controlli. La funzione è pura: non usa rete, casualità, orologio, modelli esterni o stato mutabile.
Lo stesso input produce sempre lo stesso output. Non linearizza la gamma, non gestisce profili ICC o HDR, non conserva alfa e non applica dithering; un flusso specialistico deve gestire tali operazioni.
Usi il risultato in sicurezza
Legga samples come sostituzione posizionale dell’array inviato. Poiché ogni record mantiene tre canali, i normali consumatori RGB possono usarlo senza un formato speciale. Confronti count con il numero trasmesso prima di ricostruire righe, tasselli o raster.
Larghezza, altezza, stride, orientamento, alfa e metadati restano responsabilità del chiamante. Conservi l’alfa separatamente e lo riunisca durante la codifica. Tratti errori di canale mancante, numero non finito, intervallo o dimensione come problemi dei dati, non come guasti da ritentare.
Verifichi nero, bianco, colori primari, grigio neutro, frazioni e un campione incompleto.
Casi d'uso
Creare buffer in scala di grigi
Converta campioni RGB decodificati e li reinserisca nel raster originale prima della codifica.
Domande frequenti
Quale formula viene utilizzata?
Ogni risultato è round(0.299 × r + 0.587 × g + 0.114 × b), quindi viene assegnato ai tre canali.
Il servizio accetta un file immagine?
No. Riceve campioni RGB già decodificati; decodifica e codifica devono avvenire esternamente.
La trasparenza viene conservata?
L’alfa non appartiene al contratto. Lo conservi separatamente e lo riunisca ai canali convertiti.
Perché il blu puro diventa molto più scuro del verde puro?
Perché l'occhio percepisce il verde molto più luminoso del blu, e la formula dà al verde un peso di 0,587 e al blu solo 0,114. Il verde puro diventa 150, il rosso puro 76 e il blu puro 29.
Cosa succede se a un pixel manca uno dei colori?
La conversione si ferma e indica quale pixel e quale canale mancano. Non presume mai che il valore mancante sia zero né copia un altro canale, perché cambierebbe la luminosità e romperebbe l'ordine dei pixel.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/image/grayscale-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"samples":[{"r":255,"g":0,"b":0},{"r":0,"g":128,"b":255}]}'const res = await fetch("https://api.kit.forhosting.com/image/grayscale-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 0,
"g": 128,
"b": 255
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/grayscale-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 0,
"g": 128,
"b": 255
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/grayscale-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"samples":[{"r":255,"g":0,"b":0},{"r":0,"g":128,"b":255}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"samples":[{"r":255,"g":0,"b":0},{"r":0,"g":128,"b":255}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/grayscale-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 0,
"g": 128,
"b": 255
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.grayscale_convert",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_samples | 100000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Prepari record RGB completi
Inserisca i pixel nel campo JSON samples. Se manca il verde, per esempio, invalid_input indica l’indice e il canale assente.
Usi il risultato in sicurezza
Il browser è gratuito e una richiesta API costa $0.002.
Casi di integrazione
Produrre fixture deterministiche
Generi risultati attesi esatti per testare filtri, canvas e pipeline di pixel.
Controllare piccoli batch
Incolli valori RGB rappresentativi nel browser prima di automatizzare il flusso via API.
Domande tecniche
Che cosa accade se manca un canale?
La richiesta fallisce con invalid_input e indica l’indice da zero e il canale r, g o b assente.
Quanto costa una richiesta API?
Una richiesta costa $0.002; può anche eseguire gratuitamente la stessa conversione nel browser.