Vérifiez l’alignement d’une icône sur la grille
Une grille donne de la cohérence à une collection d’icônes, mais de petits écarts de coordonnées sont difficiles à repérer systématiquement à l’œil nu.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Cet outil compare les bords gauche, supérieur, droit et inférieur du cadre d’une icône aux lignes les plus proches d’une grille régulière. Indiquez le pas de la grille et, si nécessaire, une tolérance : vous obtenez un verdict global ainsi qu’un diagnostic précis pour chaque bord. Cette vérification convient aux revues de systèmes de design, aux chaînes de traitement des ressources et aux contrôles qualité automatisés qui doivent appliquer la même règle mesurable à toutes les icônes.
Décrivez l’icône et la grille dans un même repère
Saisissez le cadre de l’icône sous la forme de quatre coordonnées : gauche, haut, droite et bas. Ces quatre valeurs doivent employer la même unité et la même origine que la grille. Par exemple, si une viewBox SVG est exprimée en unités utilisateur, fournissez les coordonnées du cadre et le pas de grille dans ces unités ; si votre processus d’exportation travaille en pixels, utilisez des pixels partout. La grille est ancrée à zéro et une ligne apparaît à chaque multiple entier de son pas, dans les directions positive et négative. Avec un pas de huit, elle comporte donc des lignes à zéro, huit, seize et vingt-quatre, mais aussi à moins huit et moins seize. Les coordonnées horizontales et verticales sont traitées de façon identique, puisque l’espacement est uniforme et carré. Les valeurs fractionnaires sont acceptées, ce qui est indispensable lorsque des transformations vectorielles ou une mise à l’échelle produisent des limites sous-pixelliques. La droite peut être égale à la gauche et le bas au haut, même si une icône visible possède généralement une largeur et une hauteur positives. Les limites inversées sont refusées, car elles ne forment pas un cadre valide. Enfin, le pas doit être strictement positif : zéro ou une valeur négative entraîne une erreur de saisie plutôt qu’un verdict trompeur.
Interprétez la tolérance et le diagnostic de chaque bord
La tolérance fixe la distance maximale entre un bord et une ligne pour que ce bord soit jugé aligné. Sa valeur par défaut est zéro, ce qui impose une coïncidence exacte après normalisation stable des nombres. Une tolérance positive inclut sa limite : avec 0.02, un bord situé exactement à 0.02 unité de la ligne la plus proche réussit le contrôle. Pour chacun des quatre côtés, la réponse indique la coordonnée d’origine, la ligne de grille la plus proche, leur distance absolue et un booléen d’alignement. Elle fournit également un verdict général, vrai uniquement si tous les bords réussissent, ainsi qu’une liste recensant chaque bord non aligné. Vous disposez ainsi d’une décision rapide et d’informations directement exploitables. Une tâche d’intégration continue peut échouer selon le verdict général, tandis qu’un outil de conception peut montrer exactement quels côtés corriger. Les résultats décimaux sont normalisés à douze chiffres afin d’éviter l’affichage d’artefacts habituels liés aux nombres à virgule flottante. Si un bord se trouve exactement à mi-distance de deux lignes, celles-ci sont équivalentes ; l’algorithme en choisit une de manière déterministe, sans modifier la distance ni le verdict. La tolérance doit rester positive ou nulle et correspondre à votre processus d’exportation, sans être gonflée au point de vider la règle de son sens.
Intégrez le contrôle au processus qualité des icônes
La méthode la plus fiable consiste à mesurer les limites après les transformations réellement destinées à la publication. Une icône peut être soigneusement dessinée sur la grille dans son document source, puis acquérir des coordonnées fractionnaires lors d’une mise à l’échelle, d’une conversion des contours, d’un ajustement de viewBox ou d’une optimisation à l’exportation. Transmettez ces limites finales au vérificateur et conservez le résultat avec les autres contrôles de ressources, tels que les règles de nommage, les dimensions et la taille des fichiers. Pour une série stricte d’icônes pixellisées, choisissez une tolérance nulle si l’exportation est censée produire des coordonnées entières. Pour des ressources vectorielles anticrénelées, adoptez une petite tolérance documentée qui reflète les arrondis légitimes de vos outils. Appliquez le même pas et la même tolérance à toute la collection afin qu’une réussite ait toujours la même signification. En cas d’échec, consultez d’abord la liste des bords non alignés, puis prenez la ligne la plus proche de chaque bord comme cible de correction. Cette capacité n’évalue que le cadre : elle ne juge ni l’équilibre optique, ni les contours, ni les points de contrôle internes, ni le poids visuel, ni la pertinence artistique de la grille. Elle fournit une assertion géométrique précise, répétable et facilement automatisable, sans réseau, état caché ou interprétation propre à un logiciel.
Cas d’usage
Faites respecter la grille du système de design
Contrôlez chaque icône proposée avec le même pas et la même tolérance avant son ajout à la bibliothèque commune.
Repérez les écarts dus à l’exportation
Testez les limites finales des SVG ou bitmaps après qu’une mise à l’échelle ou une optimisation a introduit des coordonnées fractionnaires.
Expliquez les contrôles refusés
Renvoyez la ligne la plus proche et la distance de chaque bord afin d’indiquer précisément les corrections nécessaires.
Questions fréquentes
Quel est le prix du contrôle ?
Chaque contrôle par API coûte $0.002. La version pour navigateur peut s’exécuter localement sur cette page.
Où se trouve l’origine de la grille ?
La grille est ancrée à zéro. Ses lignes se trouvent à chaque multiple entier positif ou négatif du pas choisi.
La valeur limite est-elle incluse dans la tolérance ?
Oui. Un bord dont la distance est exactement égale à la tolérance est considéré comme aligné.
Les coordonnées et le pas peuvent-ils être fractionnaires ?
Oui. Toute valeur numérique peut être fractionnaire si elle est finie et appartient au même repère.
Que se passe-t-il si le pas est nul ou négatif ?
La demande renvoie une erreur de saisie, car un espacement non positif ne peut pas définir la grille.
L’outil analyse-t-il un fichier SVG ou une image ?
Non. Il vérifie les coordonnées fournies ; l’extraction des limites du fichier doit avoir lieu à l’étape précédente.
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/icon-grid-alignment-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bounding_box":{"left":16.02,"top":7.99,"right":47.98,"bottom":40.01},"grid_size":8}'const res = await fetch("https://api.kit.forhosting.com/image/icon-grid-alignment-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bounding_box": {
"left": 16.02,
"top": 7.99,
"right": 47.98,
"bottom": 40.01
},
"grid_size": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/icon-grid-alignment-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bounding_box": {
"left": 16.02,
"top": 7.99,
"right": 47.98,
"bottom": 40.01
},
"grid_size": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/icon-grid-alignment-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bounding_box":{"left":16.02,"top":7.99,"right":47.98,"bottom":40.01},"grid_size":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bounding_box":{"left":16.02,"top":7.99,"right":47.98,"bottom":40.01},"grid_size":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/icon-grid-alignment-check", 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
{
"bounding_box": {
"left": 16.02,
"top": 7.99,
"right": 47.98,
"bottom": 40.01
},
"grid_size": 8
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.icon_grid_alignment_check",
"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. |