> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Redimensionner une image

> Redimensionner une image aux dimensions des réseaux sociaux, ajouter des filigranes ou recadrer

export const HeaderAPI = ({noProfileKey, profileKeyRequired}) => <>
    <ParamField header="Authorization" type="string" required>
      <a href="/apis/overview#authorization">API Key</a> of the Primary Profile.
      <br />
      <br />
      Format: <code>Authorization: Bearer API_KEY</code>
    </ParamField>
    {!noProfileKey && (profileKeyRequired ? <ParamField header="Profile-Key" type="string" required>
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField> : <ParamField header="Profile-Key" type="string">
          <a href="/apis/overview#profile-key-format">Profile Key</a> of a User Profile.
          <br />
          <br />
          Format: <code>Profile-Key: PROFILE_KEY</code>
        </ParamField>)}
  </>;

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

<PlansAvailable plans={["premium"]} maxPackRequired={true} />

Les réseaux sociaux ont des [exigences spécifiques](/media-guidelines) pour les images sur les réseaux sociaux. Le point de terminaison resize vous permet de choisir une taille d'image compatible avec un réseau social, d'ajouter des filigranes, de changer les arrière-plans, d'ajouter des effets, de recadrer, et plus encore.

Par défaut, le redimensionnement modifie les dimensions d'une image mais ne la recadre pas. Vous pouvez également recadrer l'image. Voir ci-dessous pour plus de détails.

## Paramètres d'en-tête

<HeaderAPI noProfileKey={true} />

## Paramètres du corps

<ParamField body="imageUrl" type="string" required>
  URL de l'image à redimensionner. Doit commencer par `https://`
</ParamField>

<ParamField body="platform" type="array" required>
  Plateforme de réseau social pour laquelle l'URL sera redimensionnée. Voir [les options de
  plateforme](/apis/media/resize#platform-options) pour plus de détails.
</ParamField>

<ParamField body="file" type="object">
  Envoyez le fichier média sous forme d'objet multipart form-data. Requis si `imageUrl` n'est pas présent.
</ParamField>

<ParamField body="watermark" type="object">
  URL et position optionnelle du filigrane à appliquer à l'image redimensionnée. Le filigrane apparaîtra
  par défaut dans le coin inférieur droit de l'image. Voir [watermark](/apis/media/resize#watermark)
  pour plus de détails.
</ParamField>

<ParamField body="effects" type="string">
  Modifier l'opacité, les couleurs, etc. Voir [les options d'effets](/apis/media/resize#effects-options) pour plus de
  détails.
</ParamField>

<ParamField body="dimensions" type="object">
  Objet spécifiant la `width` et la `height` pour le redimensionnement. En cas de recadrage, vous pouvez éventuellement spécifier les coordonnées centrales `x` et `y`.
  Par défaut, il s'agit du centre de l'image.

  ```json Dimensions theme={"system"}
  {
    "width": 500,
    "height": 500,
    "xCoordinate": 35, // optional for crop mode
    "yCoordinate": 50 // optional for crop mode
  }
  ```

  <Note>La largeur et la hauteur sont requises si la plateforme n'est pas spécifiée.</Note>
</ParamField>

<ParamField body="mode" type="string" default="resize">
  Valeur : `resize`, `blur` ou `crop`. Voir [mode](/apis/media/resize#mode) pour plus de détails.
</ParamField>

<ParamField body="convertToJpg" type="boolean">
  Convertit automatiquement en fichier JPG, par exemple d'un PNG vers un fichier JPG. Une qualité de 75 % sera utilisée.
  Voir [convertir en JPG](/apis/media/resize#convert-to-a-jpg-or-webp) pour plus de détails.
</ParamField>

<ParamField body="convertToWebP" type="boolean">
  Convertit automatiquement en fichier WebP, par exemple d'un PNG vers un fichier WebP. Une qualité de 75 % sera utilisée.
  Voir [convertir en WebP](/apis/media/resize#convert-to-a-jpg-or-webp) pour plus de détails.
</ParamField>

### Options de plateforme

Spécifiez une plateforme sous forme de chaîne pour utiliser des dimensions prédéfinies de l'image, ou vous pouvez spécifier les vôtres avec le champ `dimensions`.

Par exemple, `"platform": "facebook"` définira les dimensions de l'image à 1200 px de largeur et 630 px de hauteur.

<ul class="custom-bullets">
  <li>`facebook` : 1200 px de largeur, 630 px de hauteur.</li>
  <li>`instagram` : 1080 px de largeur, 1080 px de hauteur.</li>
  <li>`instagram_landscape` : 1080 px de largeur, 680 px de hauteur.</li>
  <li>`instagram_portrait` : 1080 px de largeur, 1920 px de hauteur.</li>
  <li>`instagram_special` : 1080 px de largeur, 800 px de hauteur.</li>
  <li>`linkedin` : 1200 px de largeur, 627 px de hauteur.</li>
  <li>`pinterest` : 1080 px de largeur, 1920 px de hauteur.</li>
  <li>`tiktok` : 1080 px de largeur, 1920 px de hauteur.</li>
  <li>`twitter` : 1600 px de largeur, 900 px de hauteur.</li>
</ul>

Notez que le redimensionnement à ces dimensions ne recadrera pas l'image.
Si vous souhaitez recadrer l'image, vous pouvez utiliser le paramètre `mode` défini sur `crop` avec les champs `dimensions` et `xCoordinate` et `yCoordinate`.

### Mode

#### Resize

Resize est le mode par défaut qui modifie les dimensions d'une image tout en conservant son rapport hauteur/largeur.
Il redimensionne l'image aux dimensions spécifiées sans recadrer aucun contenu.

Exemple JSON :

```json Resize theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "resize"
}
```

Vous pouvez également spécifier des dimensions personnalisées à l'aide du champ `dimensions` :

```json Resize with Dimensions theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "resize",
  "dimensions": {
    "width": 800,
    "height": 600
  }
}
```

Soit le champ `platform`, soit les champs `width` et `height` du champ dimensions doivent être spécifiés.

#### Crop

Crop coupera « recadrera » l'image aux dimensions spécifiées. Par défaut, la coordonnée centrale sera le centre de l'image. Vous pouvez également spécifier vos propres coordonnées x/y.

Exemple JSON :

```json Crop theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "crop"
}
```

Vous pouvez également spécifier des dimensions personnalisées et des coordonnées de recadrage optionnelles à l'aide du champ `dimensions` :

```json Crop with Dimensions theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "crop",
  "dimensions": {
    "width": 1080,
    "height": 1080,
    "xCoordinate": 35,
    "yCoordinate": 50
  }
}
```

Soit le champ `platform`, soit les champs `width` et `height` du champ dimensions doivent être spécifiés.

Pour les recadrages carrés, si `width` ou `height` sont inférieurs aux dimensions de l'image fournie, la plus petite de `width` ou `height` sera utilisée. Par exemple, si l'image mesure 1200x800 et que le recadrage demandé est 1080x1080, l'image retournée sera de 800x800.

#### Blur

L'effet de flou duplique l'image en tant qu'arrière-plan et l'applique en flou.

Exemple JSON pour blur :

```json Blur theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "blur"
}
```

Exemple d'image floutée :

<img src="https://mintcdn.com/ayrshare-docs/Nmrhj2Gh7WSf62Bh/images/apis/media/blur.webp?fit=max&auto=format&n=Nmrhj2Gh7WSf62Bh&q=85&s=8877f9f348f319fc683bc7928d767dbb" alt="Background with Blur" width="1080" height="1080" data-path="images/apis/media/blur.webp" />

### Filigrane

#### Vue d'ensemble du filigrane

Vous pouvez ajouter un filigrane à l'image en fournissant une URL, qui doit commencer par `https://` et une position optionnelle.
Le filigrane apparaîtra par défaut dans le coin inférieur droit de l'image - `southeast`.

Nous recommandons un PNG avec un arrière-plan transparent.

Exemple JSON de filigrane :

```json Watermark theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
  "platform": "instagram",
  "watermark": {
    "url": "https://img.ayrshare.com/012/100-percent.png",
    "position": "northeast" // optional
  }
}
```

Exemple d'image avec filigrane en position sud-est :

<img src="https://mintcdn.com/ayrshare-docs/Nmrhj2Gh7WSf62Bh/images/apis/media/watermark.webp?fit=max&auto=format&n=Nmrhj2Gh7WSf62Bh&q=85&s=7794b66e76cfa988131ab99232af9081" alt="Add Watermark" width="1080" height="1080" data-path="images/apis/media/watermark.webp" />

#### Position du filigrane

La position du filigrane peut être l'une des suivantes :

<ul class="custom-bullets">
  <li>`north`</li>
  <li>`northeast`</li>
  <li>`east`</li>
  <li>`southeast`</li>
  <li>`south`</li>
  <li>`southwest`</li>
  <li>`west`</li>
  <li>`northwest`</li>
  <li>`center`</li>
</ul>

### Options d'effets

#### Couleur hexadécimale

Valeur hexadécimale pour la couleur d'arrière-plan pour le flou. Applicable uniquement si `"mode": "blur"`. Valeur de type chaîne, par exemple `"#A020F0"`

Exemple JSON d'arrière-plan de couleur :

```json Color Background theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "blur",
  "effects": {
    "color": "#A020F0"
  }
}
```

Exemple d'image avec arrière-plan de couleur :

<img src="https://mintcdn.com/ayrshare-docs/Nmrhj2Gh7WSf62Bh/images/apis/media/color-background.webp?fit=max&auto=format&n=Nmrhj2Gh7WSf62Bh&q=85&s=07c06abcfac8e792c361cc8eaa9884a1" alt="Add Colored Background" width="1080" height="1080" data-path="images/apis/media/color-background.webp" />

#### Couleur : niveaux de gris, sépia, invert

Vous pouvez modifier la couleur principale de l'image en spécifiant `grayscale`, `sepia` ou `invert`. Le champ `"blur": true` n'est pas requis et ne doit pas être utilisé si vous ne souhaitez pas d'arrière-plan.

Exemple JSON pour niveaux de gris :

```json Grayscale theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/random/photo-13.jpg",
  "platform": "instagram",
  "effects": {
    "color": "grayscale"
  }
}
```

Exemple d'image en niveaux de gris :

<img src="https://mintcdn.com/ayrshare-docs/Nmrhj2Gh7WSf62Bh/images/apis/media/grayscale.webp?fit=max&auto=format&n=Nmrhj2Gh7WSf62Bh&q=85&s=c654e1485a00be0d421d4ffa19ebfbc7" alt="Add Grayscale" width="1080" height="1080" data-path="images/apis/media/grayscale.webp" />

#### Opacité

Définit l'opacité de l'image. Valeur numérique de plage : 0 - 1.

Exemple JSON d'opacité :

```json Opacity theme={"system"}
{
  "effects": {
    "opacity": 0.2
  }
}
```

#### Qualité

Pour les images JPG ou JEPG, spécifiez la qualité, ou le taux de compression, de l'image.
Plus le chiffre est bas, plus la compression est importante, mais plus la qualité de l'image est basse.
Plus le chiffre est élevé, moins la compression est importante, mais plus la qualité de l'image est élevée. Valeur numérique de plage : 0 - 100.

Exemple JSON de qualité :

```json Quality theme={"system"}
{
  "effects": {
    "quality": 20
  }
}
```

### Convertir en JPG ou WebP

Les options `convertToJpg` et `convertToWebP` vous permettent de transformer les images de leur format original (comme PNG) au format JPG ou WebP respectivement.
Par défaut, les images converties auront un paramètre de qualité de 75 %.

Vous pouvez personnaliser le niveau de compression en utilisant le paramètre [quality](/apis/media/resize#quality) dans l'objet effects.

Notez que si votre image source est déjà un JPG et que vous utilisez `convertToJpg`, l'API redimensionnera simplement l'image aux dimensions spécifiées sans changer le format.

Exemple de conversion en JPG :

```json Convert to JPG theme={"system"}
{
  "convertToJpg": true
}
```

Exemple de conversion en WebP :

```json Convert to WebP theme={"system"}
{
  "convertToWebP": true
}
```

<RequestExample>
  ```bash cURL theme={"system"}
    curl \
    -H "Authorization: Bearer API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{"mediaUrl": "https://img.ayrshare.com/012/gb.jpg", "platform": "instagram"' \
    -X POST https://api.ayrshare.com/api/media/resize
  ```

  ```javascript JavaScript theme={"system"}
  const API_KEY = "API_KEY";

  fetch("https://api.ayrshare.com/api/media/resize", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      mediaUrl: "https://img.ayrshare.com/012/gb.jpg", // required
      platform: "instagram"
    })
  })
    .then((res) => res.json())
    .then((json) => console.log(json))
    .catch(console.error);
  ```

  ```python Python theme={"system"}
  import requests

  payload = {'mediaUrl': 'https://img.ayrshare.com/012/gb.jpg',
          'platforms': 'instagram'}
  headers = {'Content-Type': 'application/json',
          'Authorization': 'Bearer API_KEY'}

  r = requests.post('https://api.ayrshare.com/api/media/resize',
      json=payload,
      headers=headers)

  print(r.json())
  ```

  ```php PHP theme={"system"}
  <?php

  $curl = curl_init();
  $data = array (
    "mediaUrl" => "https://img.ayrshare.com/012/gb.jpg",
    "platforms" => "instagram"
  );

  curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.ayrshare.com/api/media/resize',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_HTTPHEADER => array(
      'Authorization: Bearer API_KEY',
      'Accept-Encoding: gzip'
    ),
  ));

  $response = curl_exec($curl);
  curl_close($curl);
  echo $response;
  ```

  ```csharp C# theme={"system"}
  using System;
  using System.Net.Http;
  using System.Text;
  using System.Text.Json;
  using System.Threading.Tasks;

  public class AyrshareApiClient
  {
      private readonly HttpClient _httpClient;
      private readonly string _apiKey;
      private const string BaseUrl = "https://api.ayrshare.com/api";

      public AyrshareApiClient(string apiKey)
      {
          _apiKey = apiKey ?? throw new ArgumentNullException(nameof(apiKey));
          _httpClient = new HttpClient();
          _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}");
      }

      public async Task<string> ResizeMediaAsync(string mediaUrl, string platform)
      {
          try
          {
              var requestData = new
              {
                  mediaUrl = mediaUrl,
                  platform = platform
              };

              var content = new StringContent(
                  JsonSerializer.Serialize(requestData),
                  Encoding.UTF8,
                  "application/json"
              );

              var response = await _httpClient.PostAsync($"{BaseUrl}/media/resize", content);
              response.EnsureSuccessStatusCode();

              var jsonResponse = await response.Content.ReadAsStringAsync();
              return jsonResponse;
          }
          catch (HttpRequestException ex)
          {
              throw new Exception($"Failed to resize media: {ex.Message}", ex);
          }
      }

      public void Dispose()
      {
          _httpClient.Dispose();
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200: Success theme={"system"}
  {
    "status": "success",
    "url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
    "platform": "instagram",
    "mode": "blur",
    "effects": {
      "color": "#A020F0"
    }
  }
  ```

  ```json 400: Failed Resize theme={"system"}
  {
    "action": "resize",
    "status": "error",
    "code": 312,
    "message": "Invalid extension type. Extension: null. Please verify the extension is one of the following: png, jpg, jpeg and the file is accessible."
  }
  ```
</ResponseExample>
