Générez des tailles de miniatures sans déformer l’image
Ce générateur transforme les dimensions d’une image source en un ensemble de tailles de miniatures prêt à l’emploi.
Lancer gratuitement
Indiquez la largeur et la hauteur d’origine, ajoutez toutes les largeurs de sortie souhaitées et obtenez les hauteurs correspondantes dans le même ordre. Chaque hauteur découle des proportions de la source et est arrondie au pixel entier le plus proche. Cet outil facilite la préparation d’images adaptatives, la documentation des exigences multimédias, les tâches de redimensionnement et la cohérence des calculs au sein d’une équipe ou d’un processus automatisé.
Commencez par l’image source et les largeurs requises
Saisissez la largeur et la hauteur d’origine sous forme de nombres entiers positifs exprimés en pixels. Fournissez ensuite une liste contenant au moins une largeur cible. Le calculateur accepte jusqu’à cent largeurs par requête, ce qui suffit pour des jeux détaillés d’images adaptatives, des préréglages de gestion de contenu ou des listes de ressources commerciales, sans créer de tâche non bornée. L’ordre est significatif : les résultats suivent exactement la séquence demandée et les valeurs répétées sont conservées. Vous pouvez ainsi associer facilement la réponse à une liste existante de points de rupture ou de travaux d’exportation. Dans la mesure du possible, utilisez les dimensions réelles en pixels plutôt qu’un rapport simplifié. Une photographie de 4032 sur 3024 et un rapport de 4 sur 3 décrivent la même forme, mais les mesures réelles clarifient la requête et limitent le risque d’inverser largeur et hauteur. Toutes les dimensions doivent être des entiers positifs. Les zéros, valeurs négatives, décimales, chaînes, dimensions manquantes, listes vides et listes dépassant la limite sont refusés.
Comprenez le calcul de la hauteur de chaque miniature
Pour chaque largeur cible, le calculateur multiplie cette valeur par la hauteur d’origine, puis divise le résultat par la largeur d’origine. Il applique ainsi un facteur d’échelle constant aux deux axes, préserve les proportions de la source et empêche toute déformation par étirement ou compression. Les dimensions en pixels devant être entières, chaque hauteur calculée est arrondie à l’entier le plus proche selon la règle standard de JavaScript. Par exemple, une source de 1920 sur 1080 demandée avec une largeur de 800 pixels produit une hauteur de 450 pixels. Certains rapports et certaines largeurs donnent des hauteurs fractionnaires ; l’arrondi peut entraîner un écart infime avec le rapport affiché, ce qui est inévitable pour une sortie matricielle. La réponse contient les dimensions de la source, le rapport numérique largeur-hauteur et un enregistrement pour chaque largeur demandée. Cette capacité calcule uniquement des dimensions : elle ne télécharge, n’analyse, ne recadre, ne compresse, n’accentue et ne redimensionne aucune image, et ne garantit pas qu’un agrandissement d’une petite source aura une qualité satisfaisante.
Exploitez le résultat dans vos processus adaptatifs et automatisés
Le tableau de miniatures renvoyé peut alimenter une file de traitement d’images, un script de build, une livraison de conception ou la configuration d’un système de gestion de contenu. Une équipe d’interface peut demander des largeurs correspondant aux points de rupture de la mise en page et utiliser les hauteurs calculées pour réserver de l’espace avant le chargement des images. Une équipe éditoriale peut conserver les enregistrements avec la ressource multimédia afin que les responsables connaissent les dimensions exactes à produire dans un autre outil. Une intégration par API peut d’abord générer et valider le plan, puis transmettre chaque enregistrement à un service de transformation. L’algorithme étant déterministe et n’utilisant ni réseau, ni valeur aléatoire, ni heure courante, une même entrée valide renvoie toujours la même sortie. Cet outil préserve la forme complète de la source ; il ne crée pas de recadrages à rapport fixe, tels que des avatars carrés ou des cartes sociales. Si la destination impose une largeur et une hauteur exactes avec un autre rapport, choisissez un processus de recadrage. Le tarif de l’API est de $0.002 par requête, quel que soit le nombre autorisé de largeurs incluses.
Cas d’usage
Préparer un jeu d’images adaptatives
Calculez la hauteur correspondant à chaque point de rupture avant de générer les variantes srcset.
Définir les préréglages de miniatures d’un CMS
Convertissez les proportions d’une ressource et une liste éditoriale de largeurs en dimensions entières cohérentes.
Préparer des redimensionnements par lots
Créez un plan ordonné qu’un autre outil pourra exécuter sans refaire les calculs de proportions.
Questions fréquentes
Combien cela coûte-t-il ?
L’API coûte $0.002 par requête et le calculateur peut également fonctionner dans le navigateur.
Comment chaque hauteur est-elle calculée ?
Chaque largeur cible est multipliée par la hauteur source puis divisée par la largeur source, avant un arrondi au pixel entier le plus proche.
Cet outil redimensionne-t-il l’image ?
Non. Il renvoie uniquement un plan de dimensions ; il ne lit, ne charge, ne recadre et ne transforme aucun pixel.
Puis-je envoyer une liste de largeurs vide ?
Non. Au moins une largeur cible est requise ; une liste vide entraîne une erreur de saisie non valide.
Les largeurs cibles en double sont-elles supprimées ?
Non. L’ordre de saisie et les doublons sont conservés afin que chaque résultat corresponde directement à la liste demandée.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/image/thumbnail-set \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"width":1920,"height":1080,"target_widths":[1200,800,320]}'const res = await fetch("https://api.kit.forhosting.com/image/thumbnail-set", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"width": 1920,
"height": 1080,
"target_widths": [
1200,
800,
320
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/thumbnail-set",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"width": 1920,
"height": 1080,
"target_widths": [
1200,
800,
320
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/thumbnail-set", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"width":1920,"height":1080,"target_widths":[1200,800,320]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"width":1920,"height":1080,"target_widths":[1200,800,320]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/thumbnail-set", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"width": 1920,
"height": 1080,
"target_widths": [
1200,
800,
320
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.thumbnail_set",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 15 |
max_megapixels | 12 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |