mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
4.3 KiB
4.3 KiB
description, i18n_source_hash, i18n_provenance, i18n_output_hash
| description | i18n_source_hash | i18n_provenance | i18n_output_hash |
|---|---|---|---|
| Créez des mèmes à partir de modèles ou d'images personnalisées, avec des zones de texte stylisées et des choix de police. | 0a4970112ca6 | human | cd8d1d013765 |
Générateur de mèmes
Créez des mèmes à partir de modèles intégrés ou d'images personnalisées. Ajoutez du texte avec le style classique des mèmes (texte gras et contouré), plusieurs préréglages de disposition et des choix de police.
Point de terminaison API
POST /api/v1/tools/image/meme-generator
Accepte au choix :
- Données de formulaire multipart avec un fichier image et un champ JSON
settings(mode image personnalisée) - Corps JSON avec un
templateId(mode modèle, aucun envoi de fichier nécessaire)
Paramètres
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
| templateId | string | Non | - | ID du modèle de mème intégré. S'il est fourni, aucun envoi d'image n'est nécessaire |
| textLayout | string | Non | "top-bottom" |
Disposition des zones de texte : top-bottom, top-only, bottom-only, center, side-by-side |
| textBoxes | array | Non | [] |
Tableau d'objets de zone de texte avec les champs id et text |
| fontFamily | string | Non | "anton" |
Police : anton, arial-black, comic-sans, montserrat, bebas-neue, permanent-marker, roboto |
| fontSize | number | Non | auto | Taille de police en pixels (8 à 200). Calculée automatiquement si omise |
| textColor | string | Non | "#ffffff" |
Couleur de remplissage du texte |
| strokeColor | string | Non | "#000000" |
Couleur du contour du texte |
| textAlign | string | Non | "center" |
Alignement du texte : left, center, right |
| allCaps | boolean | Non | true |
Convertir le texte en majuscules |
Zones de texte
Chaque entrée du tableau textBoxes doit comporter :
| Champ | Type | Description |
|---|---|---|
| id | string | Identifiant de zone correspondant à la disposition (par exemple "top", "bottom", "left", "right", "center") |
| text | string | Le texte du mème à afficher |
ID de zones par disposition de texte
| Disposition | ID de zones disponibles |
|---|---|
top-bottom |
top, bottom |
top-only |
top |
bottom-only |
bottom |
center |
center |
side-by-side |
left, right |
Exemple de requête
Image personnalisée avec texte en haut et en bas :
curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@photo.jpg" \
-F 'settings={"textLayout": "top-bottom", "textBoxes": [{"id": "top", "text": "When the code works"}, {"id": "bottom", "text": "On the first try"}], "fontFamily": "anton", "allCaps": true}'
Utilisation d'un modèle intégré (corps JSON, aucun envoi de fichier) :
curl -X POST http://localhost:1349/api/v1/tools/image/meme-generator \
-H "Authorization: Bearer si_your-api-key" \
-H "Content-Type: application/json" \
-d '{"templateId": "drake", "textBoxes": [{"id": "top", "text": "Manual testing"}, {"id": "bottom", "text": "Automated tests"}]}'
Exemple de réponse
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/meme-drake.png",
"originalSize": 450000,
"processedSize": 520000
}
Remarques
- Soit un
templateId, soit un fichier image envoyé est requis. Si les deux sont fournis, le modèle est utilisé. - Les modèles définissent leurs propres positions de zones de texte ; le paramètre
textLayoutest ignoré lors de l'utilisation d'un modèle. - Le texte est rendu en SVG avec des contours pour obtenir le look classique des mèmes.
- La taille de police est calculée automatiquement pour s'adapter à la zone de texte si elle n'est pas définie explicitement.
- Les zones de texte vides sont ignorées (aucun rendu n'a lieu si toutes les zones sont vides).
- Le nom du fichier de sortie inclut l'ID du modèle lorsqu'un modèle est utilisé (par exemple
meme-drake.png). - Les entrées HEIC, RAW, PSD et SVG sont automatiquement décodées avant le traitement.