Calculadora de vinheta
Com intensidade 0,35, os cantos de uma imagem de 1920×1080 mantêm 65% do brilho, um escurecimento de 35%, e o centro fica intacto. Informe largura, altura e intensidade para obter o fator dos cantos e a distância em pixels. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Largura
- 1.920
- Altura
- 1.080
- Força
- 0,35
- Fator do centro
- 1
- Fator do canto
- 0,65
- Canto em relação ao centro
- 0,65
- Escurecimento do canto (%)
- 35
Esta calculadora de efeito vinheta transforma a largura, a altura e a intensidade da imagem em uma comparação clara de brilho entre o centro e os cantos. Ela usa um modelo radial quadrático normalizado: o centro mantém fator um, enquanto cada canto recebe a maior redução solicitada. O resultado traz o multiplicador dos cantos, o percentual de escurecimento e o raio em pixels do centro ao canto, informações úteis para você planejar o efeito antes de renderizá-lo em um editor, shader, canvas ou fluxo de processamento de imagens.
Interprete os fatores de brilho antes de aplicar o efeito
Uma vinheta reduz o brilho à medida que os pixels se afastam do centro da imagem. Esta calculadora representa essa mudança como multiplicador, permitindo aproveitar o resultado em editores e código de renderização. O fator central é sempre 1, ou seja, o centro preserva o brilho original.
Se o fator dos cantos for 0.65, cada canto mantém 65 por cento dos valores originais dos canais neste modelo simplificado e sofre redução de 35 por cento em relação ao centro. Intensidade 0 não produz alteração; intensidade 1 leva o fator teórico do canto a zero. A ferramenta não modifica nem examina uma imagem enviada: ela estima a própria máscara com entradas numéricas.
Assim, você pode comparar ajustes, documentar uma especificação criativa ou entender o significado de um controle antes de renderizar um arquivo grande. Considere o multiplicador como valor de máscara para luz linear ou como aproximação caso seu editor trabalhe em outro espaço de cor.
Entenda o modelo radial quadrático
O cálculo coloca o centro da imagem na distância radial zero e normaliza como um a distância até qualquer canto. Em um raio normalizado r, o multiplicador de brilho é 1 menos a intensidade vezes r ao quadrado. Elevar o raio ao quadrado deixa a mudança suave na região central e acelera o escurecimento em direção às bordas.
No centro exato, r é zero e o multiplicador continua 1. Em cada canto, r é um e o multiplicador passa a ser 1 menos a intensidade. A largura e a altura determinam o raio físico em pixels pela distância pitagórica entre metade da largura e metade da altura.
Elas não alteram o fator normalizado dos cantos, pois cada imagem retangular é normalizada pelo próprio raio. Trata-se de uma definição intencional e reproduzível, não da afirmação de que todo editor usa a mesma curva. Controles de ponto médio, arredondamento, suavização, perfil de lente ou mistura com correção de gama podem mudar a transição visual mesmo quando o multiplicador final coincide.
Use a estimativa em projetos e implementações
Comece pelas dimensões finais da imagem em pixels e informe uma intensidade entre zero e um. Use o fator retornado quando precisar de uma especificação compacta, como ‘os cantos preservam 72 por cento do brilho central’. O percentual de escurecimento é mais direto para conversar com designers ou comparar predefinições.
O raio em pixels ajuda na implementação em Canvas, WebGL, uma máscara gerada por CSS ou um renderizador offline, pois fornece a distância usada para normalizar cada pixel. Meça a distância do pixel ao centro, divida-a pelo raio retornado, limite o valor normalizado a um, eleve-o ao quadrado, multiplique pela intensidade e subtraia de um. Depois, multiplique o brilho original por esse resultado.
Se o renderizador trabalhar com RGB codificado em sRGB, lembre que multiplicar canais diretamente não equivale fisicamente à multiplicação em luz linear, embora possa corresponder ao efeito artístico desejado. Avalie a imagem visualmente, principalmente nas bordas, e ajuste a curva para reproduzir um editor específico.
Casos de uso
Planejar uma predefinição fotográfica
Converta uma intensidade proposta em multiplicador explícito antes de aplicar a predefinição a uma coleção.
Especificar uma máscara de shader
Use o raio dos cantos e o modelo quadrático para implementar uma máscara radial determinística em um fluxo gráfico.
Comparar escolhas criativas
Explique a retenção de brilho e o percentual de escurecimento de duas intensidades sem renderizar todas as imagens candidatas.
Perguntas frequentes
O que significa o fator dos cantos?
É o multiplicador de brilho em cada canto em relação ao centro inalterado. Um fator 0.7 indica que o canto preserva 70 por cento do brilho central modelado.
Por que os quatro cantos são iguais?
O modelo é radial e centralizado, portanto todos os cantos ficam à mesma distância normalizada mesmo quando largura e altura são diferentes.
Por que as dimensões importam se o fator depende da intensidade?
As dimensões determinam o raio em pixels do centro ao canto, necessário para normalizar distâncias ao implementar a máscara.
A ferramenta altera minha imagem?
Não. Ela calcula apenas fatores numéricos e não envia, decodifica, renderiza nem devolve uma imagem.
Meu editor de fotos vai gerar exatamente a mesma vinheta?
Não necessariamente. Os editores têm ajustes como ponto médio, arredondamento, suavização, perfis de lente ou mistura com gama, então a transição pode parecer diferente mesmo quando o valor dos cantos coincide.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/image/vignette-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1920,"height":1080,"strength":0.35}'const res = await fetch("https://api.kit.forhosting.com/image/vignette-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1920,
"height": 1080,
"strength": 0.35
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/vignette-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1920,
"height": 1080,
"strength": 0.35
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/vignette-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1920,"height":1080,"strength":0.35}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1920,"height":1080,"strength":0.35}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/vignette-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"width": 1920,
"height": 1080,
"strength": 0.35
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.vignette_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Perguntas técnicas
O que ocorre quando a intensidade fica fora de 0 a 1?
A solicitação retorna um erro invalid_input porque valores fora do intervalo inclusivo não pertencem a este modelo.
Quanto custa uma solicitação da API?
Cada solicitação da API custa US$ 0,002. A versão no navegador executa localmente o mesmo cálculo determinístico.