Girar imagem por graus
Girar imagem por graus calcula as dimensões em pixels necessárias para conter uma imagem retangular depois da rotação.
Executar grátis
Informe a largura, a altura e o ângulo horário. Múltiplos de 90 graus são aceitos por padrão e retornam dimensões exatas, mantidas ou invertidas. Ative a rotação livre para usar qualquer ângulo finito e receber a menor caixa de pixels inteiros, alinhada aos eixos, que contém o retângulo girado. A ferramenta faz apenas cálculos geométricos: nenhuma imagem é enviada, decodificada, armazenada ou modificada.
Calcule a caixa para rotações de um quarto de volta
Informe a largura e a altura de origem como números inteiros positivos de pixels e depois forneça o ângulo de rotação. Por padrão, o ângulo deve ser múltiplo de 90 graus. Uma rotação de 0 ou 180 graus mantém as dimensões na mesma ordem, enquanto 90 ou 270 graus troca a largura pela altura. A regra também vale para ângulos negativos e valores maiores que uma volta completa, pois a calculadora normaliza o ângulo para uma posição equivalente entre 0 e menos de 360 graus. Por exemplo, girar uma imagem de 1920 por 1080 pixels em 90 graus gera uma caixa de 1080 por 1920; uma rotação de 450 graus produz o mesmo resultado. Os quartos de volta usam lógica inteira exata, em vez de trigonometria, para evitar pequenos erros de ponto flutuante perto de ângulos retos. Os valores retornados descrevem o tamanho do canvas necessário para conter o retângulo girado; eles não representam uma imagem redimensionada.
Ative a rotação livre para ângulos arbitrários
Defina free_rotate como true quando o ângulo não for múltiplo de 90 graus. A calculadora considera a origem como um retângulo centralizado no eixo de rotação e determina a menor caixa delimitadora alinhada aos eixos que envolve os cantos girados. A largura usa as contribuições horizontais absolutas da largura e da altura originais; a altura usa as contribuições verticais correspondentes. Como o resultado geométrico real pode ficar entre pixels, cada lado é arredondado para cima até o próximo pixel inteiro. Esse arredondamento é proposital: arredondar para o valor mais próximo poderia criar um canvas pequeno demais e cortar uma borda ou um canto. Em geral, um quadrado precisa de uma caixa maior perto de 45 graus, enquanto uma imagem panorâmica pode ganhar bastante altura mesmo com uma inclinação moderada. A direção é horária por convenção, mas inclinações positivas e negativas equivalentes geram as mesmas dimensões externas.
Use o resultado com segurança em fluxos de imagem
Use a largura e a altura retornadas para criar um canvas de destino, reservar espaço em um layout, estimar memória ou configurar um comando posterior de processamento de imagem. O cálculo pressupõe rotação em torno do centro do retângulo e um canvas de saída alinhado aos eixos. Se outra ferramenta girar em torno de um canto, aplicar perspectiva, remover pixels transparentes, adicionar uma borda ou expandir com margens personalizadas, as dimensões finais poderão ser diferentes. As dimensões de origem devem ser inteiros positivos de até um bilhão de pixels, e o ângulo deve ser um número finito. O campo free_rotate precisa ser um booleano real, e não um texto como "true". Valores inválidos são rejeitados em vez de convertidos silenciosamente, o que torna a automação previsível. O algoritmo não usa rede, aleatoriedade, horário atual, decodificação de arquivos nem estado oculto. A automação pela API custa US$ 0,002 por solicitação.
Casos de uso
Prepare um canvas de rotação
Reserve um canvas de saída grande o suficiente para conter todos os cantos da imagem girada sem cortes.
Planeje layouts responsivos
Reserve a largura e a altura corretas antes de exibir um elemento gráfico girado em uma página ou aplicativo.
Monte comandos de processamento
Calcule as dimensões de destino antes de enviar a rotação para outra biblioteca ou serviço gráfico.
Perguntas frequentes
Esta capacidade gira a imagem?
Não. Ela calcula somente as dimensões da caixa delimitadora e nunca recebe nem modifica os pixels.
Por que outros ângulos são rejeitados por padrão?
O padrão protege fluxos que esperam dimensões exatas de quartos de volta. Defina free_rotate como true para aceitar qualquer ângulo finito.
Como as dimensões fracionárias são tratadas?
Cada lado é arredondado para cima até um pixel inteiro, evitando que o canvas de destino corte o retângulo girado.
Posso usar ângulos negativos ou maiores que 360 graus?
Sim. Os ângulos são normalizados para a posição equivalente dentro de uma volta completa.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002.
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/rotate-degrees \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1920,"height":1080,"angle":90}'const res = await fetch("https://api.kit.forhosting.com/image/rotate-degrees", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1920,
"height": 1080,
"angle": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/rotate-degrees",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1920,
"height": 1080,
"angle": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/rotate-degrees", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1920,"height":1080,"angle":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1920,"height":1080,"angle":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/rotate-degrees", 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,
"angle": 90
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.rotate_degrees",
"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. |