Filigrane d'image : position, échelle et cadre
Ce calculateur détermine précisément l'emplacement d'un filigrane avant toute modification de pixels.
Lancer gratuitement
Indiquez les dimensions de l'image de fond et du filigrane, un facteur d'échelle et l'une des neuf positions d'ancrage. Le résultat fournit les coordonnées gauche, haute, droite et basse, ainsi que la largeur et la hauteur finales. La réduction proportionnelle facultative adapte un filigrane trop grand tout en préservant ses proportions.
Décrivez les deux images dans un même repère
Commencez par la largeur et la hauteur de l'image de fond, puis saisissez les dimensions naturelles du filigrane. Les pixels constituent l'unité habituelle, mais toute unité positive et cohérente convient. Le facteur d'échelle s'applique uniformément aux deux dimensions et préserve donc les proportions. Une valeur de 0.5 divise chaque dimension par deux, tandis que 2 les double. Le calculateur refuse les valeurs absentes, nulles, négatives, non numériques ou infinies, car elles ne définissent pas un rectangle exploitable. Il n'ouvre ni ne modifie les fichiers, n'évalue pas le dessin visible à l'intérieur des zones transparentes et ne traite pas la rotation. Utilisez les dimensions complètes du canevas de chaque image. La largeur et la hauteur renvoyées décrivent tout le canevas placé du filigrane, y compris les pixels transparents appartenant à l'image source.
Choisissez un ancrage et lisez le cadre
La position désigne l'un des neuf ancrages : quatre coins, le milieu de chaque bord ou le centre exact. L'origine se trouve en haut à gauche, conformément aux coordonnées raster : x augmente vers la droite et y vers le bas. Un filigrane ancré en haut à gauche commence à zéro sur les deux axes ; en bas à droite, il se termine à la largeur et à la hauteur du fond. Les ancrages centrés partagent l'espace restant en deux et peuvent produire des décimales. La réponse donne x et y pour le coin supérieur gauche, width et height pour la taille placée, puis right et bottom pour les bords opposés. Ces valeurs constituent le cadre attendu par de nombreuses bibliothèques graphiques. Aucune marge n'est ajoutée. Pour ménager un retrait, modifiez ensuite les coordonnées ou agrandissez au préalable le rectangle conceptuel.
Gérez volontairement les filigranes surdimensionnés
L'échelle est évaluée avant le placement. Si le filigrane redimensionné dépasse la largeur ou la hauteur du fond, le comportement par défaut renvoie une erreur de saisie afin d'éviter un recadrage inattendu. Activez scale_down lorsque l'ajustement automatique est souhaité. Le calculateur retient le plus petit rapport disponible entre les largeurs et les hauteurs, applique cette réduction supplémentaire uniformément et garantit que les deux dimensions tiennent dans l'image. Cette option n'agrandit jamais un filigrane ; elle intervient uniquement si la taille demandée est excessive. La réponse indique l'échelle finale et le témoin scaled_down, afin que votre traitement puisse consigner toute modification. Une règle unique convient ainsi aux formats paysage, portrait et miniature sans déformation. Le calcul est déterministe, ne téléverse rien, n'utilise pas le réseau et coûte $0.002 par requête API lorsqu'il est automatisé.
Cas d’usage
Préparer une commande de superposition
Calculez les coordonnées et dimensions exactes avant de transmettre le logo et le fond à une bibliothèque graphique.
Valider des règles adaptatives
Testez la même échelle et le même ancrage sur des formats bureau, mobile, portrait et miniature sans modifier de fichier.
Éviter un recadrage accidentel
Refusez un filigrane excessif ou adaptez-le proportionnellement avant la superposition en production.
Questions fréquentes
Cette capacité modifie-t-elle une image ?
Non. Elle calcule uniquement la géométrie et renvoie un cadre utilisable par un autre moteur de rendu ou une bibliothèque.
Où se trouve l'origine des coordonnées ?
Dans le coin supérieur gauche du fond. x augmente vers la droite et y vers le bas.
La mise à l'échelle préserve-t-elle les proportions ?
Oui. Un facteur uniforme s'applique aux deux dimensions, y compris lors de l'ajustement proportionnel facultatif.
Que se passe-t-il si le filigrane est trop grand ?
La requête échoue par défaut. Activez scale_down pour le réduire proportionnellement jusqu'à ce qu'il tienne.
La position comprend-elle des marges ?
Non. Les ancrages touchent le bord concerné ou centrent exactement le rectangle. Ajoutez ensuite le retrait voulu.
Combien coûte une requête API ?
Le tarif est de $0.002 par requête. Le même calcul déterministe peut être exécuté gratuitement dans le navigateur.
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/watermark-image \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_width":1200,"base_height":800,"watermark_width":300,"watermark_height":120}'const res = await fetch("https://api.kit.forhosting.com/image/watermark-image", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_width": 1200,
"base_height": 800,
"watermark_width": 300,
"watermark_height": 120
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/watermark-image",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_width": 1200,
"base_height": 800,
"watermark_width": 300,
"watermark_height": 120
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/watermark-image", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_width":1200,"base_height":800,"watermark_width":300,"watermark_height":120}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_width":1200,"base_height":800,"watermark_width":300,"watermark_height":120}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/watermark-image", 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
{
"base_width": 1200,
"base_height": 800,
"watermark_width": 300,
"watermark_height": 120
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.watermark_image",
"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. |