Applichi un filtro seppia ai pixel RGB di un’immagine
Il rosso puro, 255, 0, 0, diventa il marrone caldo 100, 89, 69 con la matrice seppia standard, e ogni canale viene arrotondato e tenuto tra 0 e 255. Inserisca i valori RGB dei pixel e li riceva in seppia nello stesso ordine. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Applichi un filtro seppia ai pixel di un’immagine già decodificata senza caricare un file né dipendere da un codec. Fornisca un elenco ordinato di campioni RGB e riceva i campioni corrispondenti in calde tonalità brune, calcolati con la matrice di trasformazione seppia standard. Ogni canale trasformato viene arrotondato e limitato all’intervallo valido da zero a 255. La convalida completa impedisce che pixel incompleti o errati modifichino il risultato senza avvisi, mentre l’elaborazione deterministica rende il convertitore adatto a pipeline di produzione, controlli nel browser, formazione e test automatici esatti.
Prepari campioni completi di pixel RGB
Inserisca i pixel decodificati nel campo samples come elenco non vuoto di oggetti. Ogni oggetto deve contenere i canali r, g e b, e ciascun canale deve essere un valore numerico finito compreso fra zero e 255 inclusi. Gli interi sono convenzionali, ma sono accettati valori frazionari perché alcune pipeline generano campioni intermedi in virgola mobile prima della codifica finale.
Il convertitore verifica ogni record e non presume mai che un componente mancante valga zero. Mantenga l’ordine raster, poiché l’output conserva esattamente l’ordine dell’input. Una richiesta accetta fino a centomila record.
Divida raster più grandi in blocchi di dimensione fissa e concateni le risposte nello stesso ordine. La capacità elabora campioni RGB, non byte PNG, JPEG, AVIF o WebP. Decodifichi prima il file e conservi separatamente larghezza, altezza, passo di riga, orientamento e canale alfa.
Comprenda la trasformazione seppia standard
Ogni pixel di output deriva da tre somme ponderate. Il rosso è 0.393 per r più 0.769 per g più 0.189 per b. Il verde usa 0.349 per r più 0.686 per g più 0.168 per b.
Il blu usa 0.272 per r più 0.534 per g più 0.131 per b. Questa nota matrice seppia modifica sia la luminanza sia l’equilibrio dei canali, produce alte luci dominate da rossi e verdi caldi e riduce il blu. Il convertitore arrotonda ogni somma all’intero più vicino e poi la limita all’intervallo inclusivo da zero a 255.
Il limite è necessario perché le righe della matrice possono generare valori superiori a 255 nei pixel chiari. Senza questo controllo, un successivo buffer di byte potrebbe traboccare, rifiutare il valore o mostrare un colore inatteso. La risposta include matrice, campioni convertiti e conteggio, così registri e test possono indicare esattamente la trasformazione usata.
L’elaborazione è pura e deterministica: non usa rete, modelli, casualità, ora corrente, profili colore nascosti o cache mutabili. Non linearizza RGB corretto con gamma, non interpreta profili ICC, non simula pellicola chimica, non aggiunge grana, non conserva la trasparenza e non miscela il risultato con l’originale.
Integri e verifichi il risultato convertito
Usi l’elenco samples restituito come sostituzione posizionale dell’elenco RGB inviato. Il campo count deve coincidere con il numero di record di input; li confronti prima di ricostruire una tessera, una riga, una miniatura, un buffer canvas o un raster completo. Se l’immagine originale contiene trasparenza, conservi i valori alfa in un buffer parallelo e li ripristini durante la codifica, perché questo contratto trasforma soltanto rosso, verde e blu.
Il bianco brillante verifica che tutti i risultati siano limitati a 255. I colori puri rivelano modifiche accidentali ai coefficienti o all’ordine dei canali. Tratti gli errori di convalida come problemi di decodifica o costruzione della richiesta, non come guasti temporanei da riprovare senza modifiche.
Corregga canali assenti, valori fuori intervallo o NaN prima di inviare nuovamente.
Casi d'uso
Crei buffer di immagini seppia
Trasformi pixel RGB decodificati in campioni seppia caldi, poi ripristini le dimensioni originali e codifichi il risultato.
Produca riferimenti esatti per i test
Generi valori attesi deterministici per verificare codice canvas, librerie di immagini e pipeline di conversione dei pixel.
Domande frequenti
Quale matrice seppia viene utilizzata?
Il convertitore usa le righe [0.393, 0.769, 0.189], [0.349, 0.686, 0.168] e [0.272, 0.534, 0.131] per ottenere rosso, verde e blu.
Che cosa accade se un canale trasformato supera 255?
Ogni risultato ponderato viene arrotondato all’intero più vicino e limitato all’intervallo inclusivo da zero a 255.
La capacità accetta file codificati o conserva alfa?
No. Accetta solo record RGB decodificati. Conservi alfa e dimensioni separatamente, quindi codifichi i campioni restituiti.
In che colore si trasforma il bianco puro in seppia?
Diventa 255, 255, 239, un crema caldo. Le somme del rosso e del verde superano 255 e restano al massimo, mentre il blu scende un po': è questo a scaldare le luci della seppia.
Che cosa succede se a un pixel manca uno dei canali?
L'intera conversione si ferma e indica la posizione e il canale mancante. Saltare quel pixel sposterebbe tutti i successivi, e riempire un valore inventerebbe un colore che lei non ha mai indicato.
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/sepia-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"samples":[{"r":255,"g":0,"b":0},{"r":30,"g":120,"b":220}]}'const res = await fetch("https://api.kit.forhosting.com/image/sepia-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": 30,
"g": 120,
"b": 220
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/sepia-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 30,
"g": 120,
"b": 220
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/sepia-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":30,"g":120,"b":220}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"samples":[{"r":255,"g":0,"b":0},{"r":30,"g":120,"b":220}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/sepia-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": 30,
"g": 120,
"b": 220
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.sepia_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 campioni completi di pixel RGB
Se, per esempio, il campione 4 non contiene b, l’intera richiesta termina con un errore invalid_input che identifica quell’indice a base zero e il canale assente. Questo comportamento rigoroso protegge la struttura dell’immagine: ignorare un record sposterebbe tutti i pixel successivi, mentre sostituire un valore inventerebbe informazioni cromatiche.
Integri e verifichi il risultato convertito
L’esecutore nel browser e l’API usano la stessa funzione solve, quindi può controllare alcuni pixel rappresentativi prima di automatizzare un’elaborazione maggiore. L’uso nel browser è gratuito, mentre ogni richiesta API costa $0.002.
Casi di integrazione
Esamini colori rappresentativi
Controlli una piccola tavolozza nel browser prima di eseguire la stessa matrice mediante una pipeline API automatizzata.
Domande tecniche
Che cosa accade se manca un canale in un campione?
La richiesta fallisce con invalid_input e identifica l’indice a base zero e il canale r, g o b assente.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Può anche eseguire gratuitamente la stessa conversione deterministica nel browser.