Arredondar cantos da imagem
Arredondar os cantos de uma imagem parece simples, mas o raio se torna geometricamente inválido quando ultrapassa metade do menor lado.
Executar grátis
Esta calculadora verifica largura, altura e raio proposto antes que um fluxo aplique o efeito. Uma solicitação válida retorna o maior raio permitido e uma descrição clara da máscara alfa em forma de retângulo arredondado. Uma entrada inválida falha imediatamente, ajudando ferramentas de design, scripts de exportação e sistemas de conteúdo a recusarem configurações impossíveis antes da renderização.
Valide o raio antes de processar a imagem
Informe a largura e a altura da imagem como números inteiros positivos de pixels e depois indique o raio desejado para os cantos, também em pixels. O validador identifica o menor lado e o divide por dois para determinar o maior raio que cabe sem cruzar os arcos de cantos opostos. Em uma imagem de 1200 por 800, por exemplo, o menor lado tem 800 pixels e o raio máximo válido é 400 pixels. Qualquer raio de zero a 400 é aceito, inclusive valores fracionários quando o mecanismo de layout ou renderização trabalha com geometria de subpixel. Valores maiores são recusados com um erro de entrada que informa o limite calculado. Essa verificação é útil antes de chamar um transformador de imagens, pois separa uma decisão geométrica barata da decodificação, do envio ou da renderização do arquivo. Ela também estabelece uma regra única para formulários do navegador e API, evitando que um cliente reduza silenciosamente o valor enquanto outro falha. Largura e altura devem ser inteiros positivos porque representam dimensões raster reais, enquanto o raio precisa ser um número finito não negativo.
Entenda a máscara de retângulo arredondado
Um resultado válido descreve uma máscara alfa com a mesma largura e altura da imagem original. A área central permanece opaca. Em cada canto, um arco de um quarto de círculo com o raio solicitado define o limite: os pixels dentro do retângulo arredondado continuam visíveis, enquanto os pixels fora dos quatro arcos ficam transparentes quando a máscara é aplicada. A capacidade descreve essa operação, mas não envia, decodifica nem altera um arquivo de imagem. Um raio igual a zero produz um retângulo opaco comum, sem remover pixels dos cantos. No raio máximo, os arcos se encontram ao longo da menor dimensão; assim, uma imagem quadrada vira um círculo, enquanto uma imagem retangular assume uma forma semelhante a uma cápsula. A resposta repete as dimensões aceitas, o raio e o máximo calculado, além de apresentar uma descrição legível da máscara. Isso torna o resultado adequado para registros, mensagens de validação, especificações de design e código posterior que precise explicar o efeito antes de chamar um renderizador. Nenhum método de interpolação é presumido, pois a suavização pertence ao mecanismo que aplicará a máscara.
Use uma regra geométrica em design e automação
A validação consistente do raio evita diferenças sutis entre protótipos, sites, aplicativos móveis e tarefas de imagens em lote. Um sistema de design pode conferir especificações de avatares e cartões antes de publicar tokens. Um serviço de mídia pode recusar uma transformação inválida antes de reservar recursos de processamento. Uma loja pode confirmar que o arredondamento escolhido funcionará em todos os tamanhos de miniatura gerados. Como esta capacidade executa somente aritmética determinística e construção de texto, entradas idênticas sempre geram resultados idênticos; não há rede, aleatoriedade, relógio, armazenamento nem operação oculta sobre imagens. O cálculo preserva as dimensões da tela original porque arredondar cantos altera a visibilidade nas bordas, e não o tamanho da tela. O raio máximo depende apenas do menor lado, portanto girar as dimensões ou trocar largura e altura não muda o limite permitido. O preço da API é US$ 0,002 por solicitação, e o mesmo cálculo puro pode ser usado gratuitamente no navegador. Use a descrição retornada como plano ou registro de validação e depois envie o raio validado ao renderizador separado que realizará a transformação dos pixels.
Casos de uso
Verificar a geometria de avatares
Confirme se o raio de uma foto de perfil é válido e descubra se um avatar quadrado ficará totalmente circular.
Proteger uma API de transformação
Recuse configurações impossíveis antes de enviar, decodificar ou renderizar a imagem de origem.
Validar tokens de design
Compare raios compartilhados com cada tamanho de imagem e mantenha o mesmo comportamento na web, no celular e nas exportações.
Perguntas frequentes
Qual é o maior raio permitido para os cantos?
É metade da menor dimensão da imagem. Em uma imagem de 800 por 600, o raio máximo é 300 pixels.
O que acontece quando o raio é grande demais?
A solicitação falha com um erro de entrada inválida que inclui o raio máximo calculado com base nas dimensões.
Esta capacidade altera o arquivo da imagem?
Não. Ela valida dimensões e descreve a máscara alfa; um renderizador separado precisa aplicar a máscara aos pixels.
O raio pode ser zero ou fracionário?
Sim. Zero descreve uma máscara retangular sem cantos removidos, e qualquer valor fracionário finito dentro do limite é aceito.
Arredondar os cantos muda as dimensões da tela?
Não. A máscara mantém a largura e a altura originais e apenas deixa transparentes os pixels fora dos arcos.
Quanto custa uma solicitação API?
Cada solicitação API custa US$ 0,002. O cálculo determinístico também pode ser executado no navegador sem acesso à rede.
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/round-corners \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1200,"height":800,"radius":64}'const res = await fetch("https://api.kit.forhosting.com/image/round-corners", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1200,
"height": 800,
"radius": 64
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/round-corners",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1200,
"height": 800,
"radius": 64
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/round-corners", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1200,"height":800,"radius":64}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1200,"height":800,"radius":64}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/round-corners", 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": 1200,
"height": 800,
"radius": 64
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.round_corners",
"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. |