Regra dos terços: linhas e pontos em pixels
A calculadora da regra dos terços transforma a largura e a altura de uma imagem em coordenadas precisas de pixels para duas linhas verticais, duas horizontais e quatro pontos de interseção.
Executar grátis
Você pode usar o resultado para posicionar guias de composição em um editor, uma interface de câmera, uma ferramenta de corte, um sistema de design ou um fluxo automatizado. Quando uma dimensão não é divisível por três, as frações são mantidas para que o ambiente de desenho escolha a forma adequada de renderização.
O que representam as coordenadas da regra dos terços
Uma sobreposição da regra dos terços divide uma imagem retangular em três colunas e três linhas iguais. A calculadora posiciona as guias verticais em um terço e dois terços da largura informada, e as horizontais em um terço e dois terços da altura. Os cruzamentos formam quatro pontos de referência usados com frequência para posicionar uma pessoa, um rosto, um detalhe do horizonte ou outro elemento visual importante. As coordenadas começam no canto superior esquerdo: x cresce para a direita e y cresce para baixo. Essa convenção é comum em gráficos rasterizados, canvas, navegadores e editores de imagem. A resposta mantém a largura e a altura originais e separa as linhas verticais, horizontais e interseções para facilitar o uso de cada grupo. O recurso não examina pixels, não avalia a composição, não corta a imagem nem move nenhum objeto. Ele fornece geometria determinística que outro aplicativo pode desenhar, armazenar, comparar ou usar como orientação de enquadramento.
Como pixels fracionários e validação são tratados
Cada coordenada é calculada diretamente a partir da dimensão total, sem arredondamento intermediário. Para uma largura de 1200 pixels, as guias verticais ficam exatamente nos valores x 400 e 800. Para 1000 pixels, ficam em 333.3333333333333 e 666.6666666666666 na representação numérica do JavaScript. Manter essas frações é importante porque os sistemas de renderização são diferentes: um canvas vetorial pode desenhar em posições de subpixel, enquanto um fluxo rasterizado pode preferir arredondar para baixo, para cima, para o inteiro mais próximo ou conforme o dispositivo. Uma regra arbitrária dentro da calculadora eliminaria essa escolha e poderia deixar uma região externa maior que a outra. A largura e a altura precisam ser números inteiros, positivos e finitos, pois descrevem dimensões rasterizadas. O valor zero é rejeitado expressamente porque uma imagem sem largura ou altura não possui área geométrica útil. Valores negativos, frações, campos ausentes, textos, infinitos e dados não numéricos também geram um erro de entrada inválida.
Como usar o resultado em editores e automações
Para desenhar a sobreposição, trace cada guia vertical de y igual a zero até a altura total na coordenada x retornada. Depois, trace cada guia horizontal de x igual a zero até a largura total na coordenada y correspondente. Os quatro pontos de interseção já vêm enumerados e podem virar alças, alvos, marcadores ou referências de encaixe sem novo cálculo. Em uma visualização responsiva, use as dimensões reais da imagem em pixels, e não o tamanho CSS exibido; em seguida, aplique às coordenadas o mesmo fator de escala da imagem. Em um fluxo de corte, faça o cálculo sobre o retângulo final depois de conhecer suas dimensões, pois os terços pertencem ao enquadramento definitivo. A função é pura e não usa rede, aleatoriedade, datas, decodificação de imagem nem estado persistente. Portanto, entradas idênticas sempre produzem o mesmo JSON, o que atende ferramentas web, validações no servidor, testes e processos reproduzíveis. O uso no navegador é grátis; uma solicitação API custa US$ 0,002.
Casos de uso
Desenhar guias em um editor de imagens
Transforme as dimensões do canvas ativo em coordenadas para uma sobreposição uniforme da regra dos terços.
Adicionar alvos de composição à câmera
Posicione quatro marcadores de foco ou de assunto usando a resolução atual, sem deslocamentos fixos.
Validar layouts de corte
Calcule os terços de um corte proposto para comparar elementos importantes com as guias de composição.
Perguntas frequentes
Quais coordenadas são retornadas?
O resultado contém duas posições x verticais, duas posições y horizontais e os quatro pontos de cruzamento dessas linhas.
Onde fica a origem das coordenadas?
A origem fica no canto superior esquerdo da imagem. X cresce para a direita e y cresce para baixo.
As posições fracionárias são arredondadas?
Não. As frações são preservadas para que o renderizador escolha seu próprio alinhamento inteiro ou de subpixel.
O que acontece se a largura ou a altura for zero?
A solicitação falha com entrada inválida porque uma imagem sem dimensão não comporta uma grade útil.
Quanto custa uma solicitação API?
Cada solicitação API custa US$ 0,002. O mesmo cálculo determinístico também pode ser executado gratuitamente no navegador.
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/grid-overlay-thirds \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1200,"height":800}'const res = await fetch("https://api.kit.forhosting.com/image/grid-overlay-thirds", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1200,
"height": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/grid-overlay-thirds",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1200,
"height": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/grid-overlay-thirds", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1200,"height":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1200,"height":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/grid-overlay-thirds", 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
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.grid_overlay_thirds",
"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. |