Raddrizza una foto storta
Ruotare un'immagine significa girarla di 90, 180 o 270 gradi. Lo strumento salva la foto già orientata bene, così chi la apre la vede dritta senza doverla girare a mano. Utile per scansioni entrate storte nello scanner e scatti che il telefono ha memorizzato di traverso.
Questa attività non è disponibile al momento, quindi non può essere acquistata. Non viene addebitato nulla.
Vedi l'APIRotazione netta a scatti di 90 gradi
I casi più comuni sono tutti quarti di giro: la foto è coricata e va rimessa verticale con 90 o 270 gradi, oppure è capovolta e un mezzo giro di 180 gradi la raddrizza. Sono rotazioni ad angolo retto: i pixel vengono solo riordinati, senza ricalcolare nulla, quindi la qualità resta identica e l'unica differenza è che larghezza e altezza si scambiano su un quarto di giro. Il raddrizzamento fine di pochi gradi, per un orizzonte appena inclinato, non fa parte di questa capacità.
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 coricate 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 e WebP 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 di 90 gradi e lo salvi già dritto, così lo vede bene chiunque lo riceva.
Scansione capovolta da raddrizzare
Un foglio è entrato nello scanner al contrario e si apre a testa in giù. Un mezzo giro di 180 gradi lo rimette dritto prima dell'archiviazione.
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?
No. La rotazione è solo ad angolo retto: 0, 90, 180 o 270 gradi. Copre scatti e scansioni coricati o capovolti; raddrizzare un'inclinazione di pochi gradi non è previsto qui.
Cambiano le dimensioni se ruoto di un quarto di giro?
Sì: con una rotazione di 90 o 270 gradi larghezza e altezza si scambiano. Un mezzo giro di 180 gradi mantiene le stesse dimensioni.
Ruotare peggiora la qualità?
No. Le rotazioni di 90, 180 o 270 gradi riordinano soltanto i pixel esistenti: sono senza perdita, cambia solo lo scambio tra larghezza e altezza.
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
One authenticated POST creates the task; the result comes back by webhook or a signed link. This capability is currently available through the API, not as an interactive Web tool.
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. |