This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

محرك الصور

تتولى حزمة @snapotter/image-engine جميع عمليات الصور غير المعتمدة على الذكاء الاصطناعي. وهي تغلّف Sharp وتعمل بالكامل داخل العملية دون أي اعتماديات خارجية.

العمليات

resize

قياس صورة إلى أبعاد محددة أو بنسبة مئوية.

المعاملالنوعالوصف
widthnumberالعرض المستهدف بالبكسل
heightnumberالارتفاع المستهدف بالبكسل
fitstringcover أو contain أو fill أو inside أو outside
withoutEnlargementbooleanإذا كان true، فلن يكبّر الصور الأصغر
percentagenumberالقياس بنسبة مئوية بدلًا من الأبعاد المطلقة

يمكنك تعيين width أو height أو كليهما. إذا عيّنت أحدهما فقط، فسيُحسب الآخر للحفاظ على نسبة العرض إلى الارتفاع.

crop

قص منطقة مستطيلة من الصورة.

المعاملالنوعالوصف
leftnumberإزاحة X من الحافة اليسرى
topnumberإزاحة Y من الحافة العلوية
widthnumberعرض منطقة الاقتصاص
heightnumberارتفاع منطقة الاقتصاص
unitstringpx (افتراضي) أو percent

rotate

تدوير الصورة بزاوية معينة.

المعاملالنوعالوصف
anglenumberزاوية التدوير بالدرجات (0-360)
backgroundstringلون التعبئة للمنطقة المكشوفة (افتراضي: #000000). ينطبق فقط على الزوايا غير المضاعفة لـ 90 درجة.

flip

عكس الصورة أفقيًا أو رأسيًا أو كليهما. يجب أن يكون أحدهما على الأقل true.

المعاملالنوعالوصف
horizontalbooleanالعكس من اليسار إلى اليمين
verticalbooleanالعكس من الأعلى إلى الأسفل

convert

تغيير صيغة الصورة.

المعاملالنوعالوصف
formatstringالصيغة المستهدفة: jpg، png، webp، avif، tiff، gif، jxl، heic، heif، bmp، ico، jp2، qoi
qualitynumberجودة الضغط (1-100، تنطبق على الصيغ ذات الفقد)

الصيغ السبع الأولى (من jpg إلى jxl) يرمّزها Sharp داخل العملية. أما الصيغ المتبقية فتستخدم مرمّزات خارجية في طبقة الـ API: heic/heif عبر heif-enc، وbmp/ico عبر ImageMagick، وjp2 عبر opj_compress، وqoi عبر مرمّز TypeScript مضمّن.

compress

تقليل حجم الملف مع الحفاظ على الصيغة نفسها.

المعاملالنوعالوصف
qualitynumberالجودة المستهدفة (1-100)
targetSizeBytesnumberحجم الملف المستهدف اختياريًا بالبايت
formatstringتجاوز الصيغة اختياريًا

strip-metadata

إزالة بيانات EXIF وIPTC وXMP وICC الوصفية من الصورة. بدون أي معاملات (أو stripAll: true)، يزيل كل شيء. مرّر أعلامًا فردية للإزالة الانتقائية.

المعاملالنوعالوصف
stripAllbooleanإزالة كل البيانات الوصفية (افتراضي عند عدم تعيين أي أعلام)
stripExifbooleanإزالة بيانات EXIF (بما في ذلك GPS إذا لم يُعيَّن stripGps بشكل منفصل)
stripGpsbooleanإزالة بيانات موقع GPS
stripIccbooleanإزالة ملف تعريف ألوان ICC
stripXmpbooleanإزالة بيانات XMP الوصفية

تعديلات اللون

تعدّل هذه العمليات خصائص لون الصورة. تأخذ كل منها قيمة رقمية واحدة.

العمليةالمعاملالنطاقالوصف
brightnessvalue-100 إلى 100ضبط السطوع
contrastvalue-100 إلى 100ضبط التباين
saturationvalue-100 إلى 100ضبط تشبع اللون

مرشحات اللون

تطبّق هذه تحويلًا لونيًا ثابتًا. لا تأخذ أي معاملات.

العمليةالوصف
grayscaleالتحويل إلى تدرج رمادي
sepiaتطبيق درجة بنية داكنة (سيبيا)
invertعكس جميع الألوان

قنوات اللون

ضبط قنوات ألوان RGB الفردية. القيم هي مضاعِفات حيث 100 = بلا تغيير.

المعاملالنوعالوصف
rednumberمضاعِف القناة الحمراء (0 إلى 200، 100 = دون تغيير)
greennumberمضاعِف القناة الخضراء (0 إلى 200، 100 = دون تغيير)
bluenumberمضاعِف القناة الزرقاء (0 إلى 200، 100 = دون تغيير)

sharpen

زيادة حدّة بسيطة يتحكم فيها قيمة واحدة.

المعاملالنوعالوصف
valuenumberشدة زيادة الحدّة (0 إلى 100). تُربَط بسيغما غاوسية بين 0.5 و10.

sharpen-advanced

زيادة حدّة متقدمة بثلاث طرق قابلة للاختيار وتمريرة تمهيدية اختيارية لتقليل التشويش.

المعاملالنوعالوصف
methodstringadaptive أو unsharp-mask أو high-pass
sigmanumberنصف قطر التمويه الغاوسي، 0.5-10 (تكيّفي)
m1numberزيادة حدّة المناطق المسطحة، 0-10 (تكيّفي)
m2numberزيادة حدّة المناطق ذات النسيج، 0-20 (تكيّفي)
x1numberعتبة المسطح/المتعرج، 0-10 (تكيّفي)
y2numberأقصى تفتيح (تقييد الهالة)، 0-50 (تكيّفي)
y3numberأقصى تعتيم (تقييد الهالة)، 0-50 (تكيّفي)
amountnumberالنسبة المئوية للشدة، 0-500 (قناع غير الحدّة)
radiusnumberنصف قطر التمويه، 0.1-5.0 (قناع غير الحدّة)
thresholdnumberالحد الأدنى لسطوع الحواف، 0-255 (قناع غير الحدّة)
strengthnumberقوة المزج، 0-100 (تمرير عالٍ)
kernelSizenumber3 أو 5 لنواة 3x3 / 5x5 (تمرير عالٍ)
denoisestringتمريرة تمهيدية لتقليل التشويش: off أو light أو medium أو strong

المعاملات خاصة بكل طريقة. زوّد فقط تلك المتعلقة بالطريقة المختارة.

color-blindness

محاكاة قصور رؤية الألوان باستخدام مصفوفة إعادة تركيب لون 3x3.

المعاملالنوعالوصف
typestringأحد: protanopia، deuteranopia، tritanopia، protanomaly، deuteranomaly، tritanomaly، achromatopsia، blueConeMonochromacy

edit-metadata

كتابة أو إزالة حقول بيانات EXIF/IPTC الوصفية الفردية دون إزالة الكتلة بأكملها.

المعاملالنوعالوصف
artiststringوسم EXIF Artist
copyrightstringوسم EXIF Copyright
imageDescriptionstringوسم EXIF ImageDescription
softwarestringوسم EXIF Software
dateTimestringوسم EXIF DateTime
dateTimeOriginalstringوسم EXIF DateTimeOriginal
clearGpsbooleanإزالة جميع وسوم GPS
fieldsToRemovestring[]قائمة بأسماء حقول EXIF المراد حذفها

جميع المعاملات اختيارية. تُحذف الحقول المدرجة في fieldsToRemove من كتلة EXIF الحالية. أما الحقول المعيّنة عبر المعاملات المسمّاة فتُكتب (أو يُعاد كتابتها). تُتجاهل المفاتيح الثنائية/غير الآمنة مثل MakerNote بصمت.

اكتشاف الصيغة

يكتشف المحرك صيغ الإدخال تلقائيًا من ترويسات الملفات، لا من امتدادات الملفات فقط. هذا يعني أن ملف .jpg هو في الواقع PNG سيُعالَج بشكل صحيح. يستخدم الاكتشاف نهجًا متعدد الطبقات: البايتات السحرية أولًا، ثم امتداد الملف كاحتياطي.

يدعم SnapOtter أكثر من 55 صيغة إدخال و13 صيغة إخراج، بما في ذلك 23 صيغة RAW من الكاميرات من أكثر من 20 علامة تجارية، وصيغ احترافية (PSD، EPS، OpenEXR، HDR)، ومرمّزات حديثة (JPEG XL، AVIF، HEIC، QOI، JPEG 2000)، وصيغ علمية/للألعاب (FITS، DDS). يتولى Sharp فك الترميز أصليًا حيثما أمكن، مع احتياط تلقائي إلى ImageMagick وLibRaw ومفكّكات ترميز CLI متخصصة.

راجع صفحة الصيغ المدعومة للاطلاع على القائمة الكاملة.

استخراج البيانات الوصفية

تعيد أداة info بيانات الصورة الوصفية. راجع معلومات الصورة لمرجع الحقول الكامل.

json
{
  "filename": "photo.jpg",
  "fileSize": 2450000,
  "width": 4032,
  "height": 3024,
  "format": "jpeg",
  "channels": 3,
  "hasAlpha": false,
  "colorSpace": "srgb",
  "density": 72,
  "isProgressive": false,
  "hasExif": true,
  "hasIcc": true,
  "hasXmp": false,
  "bitDepth": "8",
  "pages": 1,
  "histogram": [
    { "channel": "red", "min": 0, "max": 255, "mean": 128.45, "stdev": 52.31 },
    { "channel": "green", "min": 2, "max": 253, "mean": 115.22, "stdev": 48.76 },
    { "channel": "blue", "min": 0, "max": 250, "mean": 102.89, "stdev": 55.14 }
  ]
}