> ## 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.

# تغيير حجم الصورة

> غيّر حجم صورة إلى أبعاد وسائل التواصل الاجتماعي، أو أضف علامات مائية، أو اقتطعها

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} />

للشبكات الاجتماعية [متطلبات محددة](/media-guidelines) لصور وسائل التواصل الاجتماعي. تتيح لك نقطة نهاية تغيير الحجم اختيار حجم صورة متوافق مع الشبكة الاجتماعية، وإضافة علامات مائية، وتغيير الخلفيات، وإضافة تأثيرات، والاقتطاع، والمزيد.

افتراضيًا سيغيّر تغيير الحجم أبعاد الصورة، لكنه لن يقتطع الصورة. يمكنك بدلًا من ذلك اقتطاع الصورة. راجع أدناه للتفاصيل.

## معاملات الترويسة

<HeaderAPI noProfileKey={true} />

## معاملات الجسم

<ParamField body="imageUrl" type="string" required>
  عنوان URL للصورة المراد تغيير حجمها. يجب أن يبدأ بـ `https://`
</ParamField>

<ParamField body="platform" type="array" required>
  منصة الوسائط الاجتماعية التي سيُغيَّر حجم الـ URL لها. راجع [خيارات المنصة](/apis/media/resize#platform-options)
  للتفاصيل.
</ParamField>

<ParamField body="file" type="object">
  أرسل ملف الوسائط كائن نموذج multipart form-data. مطلوب إذا لم يكن `imageUrl` موجودًا.
</ParamField>

<ParamField body="watermark" type="object">
  عنوان URL وموضع اختياري للعلامة المائية التي ستُطبَّق على الصورة بعد تغيير حجمها. ستظهر العلامة المائية
  افتراضيًا في الزاوية اليمنى السفلى للصورة. راجع [العلامة المائية](/apis/media/resize#watermark)
  للتفاصيل.
</ParamField>

<ParamField body="effects" type="string">
  غيّر الشفافية والألوان وما إلى ذلك. راجع [خيارات التأثيرات](/apis/media/resize#effects-options)
  للتفاصيل.
</ParamField>

<ParamField body="dimensions" type="object">
  كائن يحدد `width` و`height` لتغيير الحجم. في حال الاقتطاع، يمكنك اختياريًا تحديد إحداثيات `x` و`y` للمركز.
  الافتراضي هو مركز الصورة.

  ```json الأبعاد theme={"system"}
  {
    "width": 500,
    "height": 500,
    "xCoordinate": 35, // optional for crop mode
    "yCoordinate": 50 // optional for crop mode
  }
  ```

  <Note>العرض والارتفاع مطلوبان إذا لم تُحدَّد المنصة.</Note>
</ParamField>

<ParamField body="mode" type="string" default="resize">
  القيمة: `resize` أو `blur` أو `crop`. راجع [الوضع](/apis/media/resize#mode) للتفاصيل.
</ParamField>

<ParamField body="convertToJpg" type="boolean">
  يحول تلقائيًا إلى ملف JPG، مثلًا من PNG إلى JPG. سيُستخدم مستوى جودة 75%.
  راجع [التحويل إلى JPG](/apis/media/resize#convert-to-a-jpg-or-webp) للتفاصيل.
</ParamField>

<ParamField body="convertToWebP" type="boolean">
  يحول تلقائيًا إلى ملف WebP، مثلًا من PNG إلى WebP. سيُستخدم مستوى جودة 75%.
  راجع [التحويل إلى WebP](/apis/media/resize#convert-to-a-jpg-or-webp) للتفاصيل.
</ParamField>

### خيارات المنصة

حدّد منصة كسلسلة نصية لاستخدام الأبعاد المحددة مسبقًا للصورة، أو يمكنك تحديد أبعادك الخاصة باستخدام حقل `dimensions`.

على سبيل المثال، سيؤدي `"platform": "facebook"` إلى تعيين أبعاد الصورة إلى عرض 1200 بكسل وارتفاع 630 بكسل.

<ul class="custom-bullets">
  <li>`facebook`: عرض 1200 بكسل، ارتفاع 630 بكسل.</li>
  <li>`instagram`: عرض 1080 بكسل، ارتفاع 1080 بكسل.</li>
  <li>`instagram_landscape`: عرض 1080 بكسل، ارتفاع 680 بكسل.</li>
  <li>`instagram_portrait`: عرض 1080 بكسل، ارتفاع 1920 بكسل.</li>
  <li>`instagram_special`: عرض 1080 بكسل، ارتفاع 800 بكسل.</li>
  <li>`linkedin`: عرض 1200 بكسل، ارتفاع 627 بكسل.</li>
  <li>`pinterest`: عرض 1080 بكسل، ارتفاع 1920 بكسل.</li>
  <li>`tiktok`: عرض 1080 بكسل، ارتفاع 1920 بكسل.</li>
  <li>`twitter`: عرض 1600 بكسل، ارتفاع 900 بكسل.</li>
</ul>

ملاحظة: لن يقتطع تغيير الحجم إلى هذه الأبعاد الصورة.
إذا أردت اقتطاع الصورة، يمكنك استخدام المعامل `mode` مضبوطًا على `crop` مع حقول `dimensions` و`xCoordinate` و`yCoordinate`.

### الوضع

#### Resize

Resize هو الوضع الافتراضي الذي سيُغيّر أبعاد الصورة مع الحفاظ على نسبة العرض إلى الارتفاع.
غيّر حجم الصورة إلى الأبعاد المحددة دون اقتطاع أي محتوى.

مثال JSON:

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

يمكنك أيضًا تحديد أبعاد مخصصة باستخدام حقل `dimensions`:

```json Resize مع أبعاد theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "resize",
  "dimensions": {
    "width": 800,
    "height": 600
  }
}
```

يجب تحديد إما `platform` أو حقلي الأبعاد `width` و`height`.

#### Crop

سيقتطع Crop الصورة إلى الأبعاد المحددة. افتراضيًا، سيكون إحداثي المركز هو مركز الصورة. يمكنك أيضًا تحديد إحداثيات x/y الخاصة بك.

مثال JSON:

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

يمكنك أيضًا تحديد أبعاد مخصصة وإحداثيات اقتطاع اختيارية باستخدام حقل `dimensions`:

```json Crop مع أبعاد theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "mode": "crop",
  "dimensions": {
    "width": 1080,
    "height": 1080,
    "xCoordinate": 35,
    "yCoordinate": 50
  }
}
```

يجب تحديد إما `platform` أو حقلي الأبعاد `width` و`height`.

للاقتطاع المربع، إذا كان `width` أو `height` أقل من أبعاد الصورة المُقدَّمة، فستُستخدم القيمة الأصغر من `width` أو `height`. على سبيل المثال، إذا كانت الصورة 1200x800 وكان الاقتطاع المطلوب 1080x1080، فستكون الصورة المُعادة 800x800.

#### Blur

سيُكرر تأثير Blur الصورة كخلفية ويُطبّق تشويشًا (blur) على الصورة.

مثال JSON للتشويش:

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

مثال صورة مع تشويش:

<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" />

### العلامة المائية

#### نظرة عامة على العلامة المائية

يمكنك إضافة علامة مائية إلى الصورة بتوفير URL يجب أن يبدأ بـ `https://` وموضع اختياري.
ستظهر العلامة المائية افتراضيًا في الزاوية اليمنى السفلى من الصورة — `southeast`.

نوصي بصورة PNG ذات خلفية شفافة.

مثال JSON للعلامة المائية:

```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
  }
}
```

مثال صورة بعلامة مائية في الموضع southeast:

<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" />

#### موضع العلامة المائية

يمكن أن يكون موضع العلامة المائية أحد التالي:

<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>

### خيارات التأثيرات

#### القيمة الست عشرية للون

قيمة ست عشرية للون خلفية التشويش. تنطبق فقط إذا كان `"mode": "blur"`. قيمة سلسلة، على سبيل المثال `"#A020F0"`

مثال JSON لخلفية ملونة:

```json خلفية ملونة theme={"system"}
{
  "mediaUrl": "https://img.ayrshare.com/012/gb.jpg",
  "platform": "instagram",
  "mode": "blur",
  "effects": {
    "color": "#A020F0"
  }
}
```

مثال صورة بخلفية ملونة:

<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" />

#### اللون: تدرج رمادي، Sepia، عكس (Invert)

يمكنك تغيير اللون الأساسي للصورة بتحديد `grayscale` أو `sepia` أو `invert`. الحقل `"blur": true` غير مطلوب ولا ينبغي استخدامه إذا لم ترغب في وجود خلفية.

مثال JSON لتدرج رمادي:

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

مثال صورة بتدرج رمادي:

<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" />

#### الشفافية

اضبط شفافية الصورة. مدى القيمة الرقمية: 0 - 1.

مثال JSON للشفافية:

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

#### الجودة

بالنسبة لصور JPG أو JPEG، حدّد جودة الصورة، أو مقدار الضغط.
كلما انخفض الرقم زاد الضغط لكن قلّت جودة الصورة.
كلما زاد الرقم قلّ الضغط لكن زادت جودة الصورة. مدى القيمة الرقمية: 0 - 100.

مثال JSON للجودة:

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

### التحويل إلى JPG أو WebP

يتيح لك الخياران `convertToJpg` و`convertToWebP` تحويل الصور من صيغتها الأصلية (مثل PNG) إلى صيغة JPG أو WebP على التوالي.
افتراضيًا، ستكون للصور المحوَّلة إعدادات جودة 75%.

يمكنك تخصيص مستوى الضغط باستخدام معامل [quality](/apis/media/resize#quality) في كائن التأثيرات.

لاحظ أنه إذا كانت الصورة المصدر بالفعل بصيغة JPG واستخدمت `convertToJpg`، فسيقوم API ببساطة بتغيير حجم الصورة إلى الأبعاد التي حددتها دون تغيير الصيغة.

مثال التحويل إلى JPG:

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

مثال التحويل إلى 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: نجاح theme={"system"}
  {
    "status": "success",
    "url": "https://media.ayrshare.com/9abf1426d6ce9122ef11c72bd62e59807c5cc083/8UbyBjHTxgHkAC1I37e6O.jpg",
    "platform": "instagram",
    "mode": "blur",
    "effects": {
      "color": "#A020F0"
    }
  }
  ```

  ```json 400: فشل تغيير الحجم 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>
