Raddrizza una foto storta
Ruotare un'immagine significa girarla di 90, 180 o 270 gradi, oppure di pochi gradi per raddrizzarla. Lo strumento salva la foto già orientata bene, così chi la apre la vede dritta senza doverla girare a mano. Utile per scansioni storte e scatti che il telefono ha memorizzato di traverso.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
Rotazione netta o raddrizzamento fine
Ci sono due bisogni diversi. Il primo è la rotazione a scatti di 90 gradi: la foto è coricata e va rimessa verticale, o al contrario. Il secondo è il raddrizzamento fine, di pochi gradi, quando una scansione o uno scatto sono leggermente inclinati e l'orizzonte “pende”. Nel raddrizzamento a gradi liberi si creano dei triangoli vuoti agli angoli: puoi riempirli di colore o ritagliare leggermente per eliminarli. Salvando, l'orientamento diventa quello vero del file, non una semplice anteprima girata.
Il caso dell'orientamento EXIF
Capita spesso: apri una foto e la vedi dritta sul telefono, ma su un altro programma è coricata. Succede perché lo scatto è memorizzato di traverso con un'etichetta EXIF che dice “giralo”, e non tutti i software la rispettano. Ruotando e salvando qui, l'immagine viene scritta davvero nell'orientamento giusto, senza dipendere da quell'etichetta. È il modo di risolvere alla radice le foto che “si girano da sole” quando le carichi su un portale o le allegi a una email.
Una foto o molte
Da questa pagina giri il singolo scatto e vedi subito il risultato. Se hai un lotto di scansioni tutte storte allo stesso modo, puoi applicare la stessa rotazione a tutte, e via API puoi automatizzarla dentro un flusso. Presto arrivano anche l'app, l'email e Telegram come canali aggiuntivi. Accetta JPG, PNG, WebP, AVIF e GIF fino a 15 MB e 12 megapixel per immagine.
Casi d'uso
Scansione del documento coricata
Lo scanner ha salvato il contratto girato di lato. Lo ruoti di 90 gradi e lo salvi dritto, pronto da allegare alla PEC o da unire a un PDF.
Foto dello smartphone di traverso
Uno scatto verticale si apre orizzontale sul PC per via dell'orientamento EXIF. Lo ruoti e lo salvi già dritto, così lo vede bene chiunque lo riceva.
Orizzonte storto da raddrizzare
La foto del cantiere di Tecnoedil Verona S.n.c. pende di qualche grado. La raddrizzi con una piccola rotazione e ritagli i bordi, ottenendo un'immagine pulita.
Domande frequenti
Perché la foto si vede dritta sul telefono ma storta sul PC?
Perché è memorizzata di traverso con un'etichetta di orientamento (EXIF) che alcuni programmi ignorano. Ruotando e salvando qui, l'immagine viene scritta davvero nel verso giusto e si vede corretta ovunque.
Posso raddrizzare di pochi gradi, non solo di 90?
Sì. Oltre alle rotazioni nette di 90, 180 e 270 gradi puoi correggere piccole inclinazioni a gradi liberi, utile quando l'orizzonte pende leggermente.
Cosa succede agli angoli se ruoto di pochi gradi?
Si creano dei triangoli vuoti agli angoli: puoi riempirli con un colore o ritagliare un po' l'immagine per farli sparire, ottenendo un bordo pulito.
Ruotare peggiora la qualità?
Le rotazioni di 90, 180 o 270 gradi non toccano la qualità. Il raddrizzamento a gradi liberi ricalcola i pixel, ma la differenza è impercettibile su una foto normale.
Quanto costa e c'è un canone?
$0.005 a immagine più $0.002 a richiesta, senza abbonamento e senza registrazione. Paghi solo le foto che giri.
Le immagini caricate restano da voi?
No. Vengono elaborate e cancellate subito dopo; non le conserviamo.
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/rotate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/rotate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/rotate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/rotate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/rotate", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.rotate",
"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_mb | 15 |
max_megapixels | 12 |
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. |