حساب تصحيح اتجاه EXIF
احصل على التصحيح الدقيق لأي قيمة اتجاه EXIF من 1 إلى 8: الاتجاه 6 يعني تدويرًا بمقدار 90 درجة باتجاه عقارب الساعة دون انعكاس، والقيم المعكوسة تحصل أيضًا على الانعكاس الصحيح. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الاتجاه
- 6
- الدوران (درجات)
- 90
- ترتيب العمليات
- flip_then_rotate
تخبر علامة Orientation في EXIF البرامج بكيفية تحويل وحدات البكسل المخزنة كي تظهر الصورة مستقيمة. تحوّل هذه الإمكانية أي قيمة صالحة من 1 إلى 8 إلى تعليمة جاهزة للتنفيذ تشمل التدوير مع عقارب الساعة، ومؤشري الانعكاس الأفقي أو الرأسي، وترتيب تطبيق العمليات. وهي تعالج دورات الكاميرا المعتادة والحالات المعكوسة التي يسهل تنفيذها بصورة خاطئة. يمكنكم استخدام النتيجة في مسارات معالجة الصور، وخدمات الصور المصغرة، وأدوات التحقق من الملفات المرفوعة، وأدوات فحص البيانات الوصفية من دون صيانة جدول اتجاهات خاص بكم.
لماذا قد تحتوي الصورة المستقيمة على بكسلات جانبية
تتجنب كاميرات وهواتف كثيرة إعادة ترتيب كل بكسل عند تدوير الجهاز. وبدلاً من ذلك، تحفظ شبكة البكسلات في الوضع الأنسب للمستشعر، ثم تكتب علامة Orientation في EXIF لتخبر برنامج العرض بكيفية تقديمها. يعرض البرنامج الذي يحترم العلامة الصورة مستقيمة، أما البرنامج الذي يتجاهلها فقد يعرض الملف نفسه جانبياً أو مقلوباً رأساً على عقب أو منعكساً.
تعرّف العلامة ثماني قيم، لا أربع زوايا دوران فقط. تصف القيم 1 و3 و6 و8 الوضع العادي ونصف دورة وربعي الدورة. أما القيم 2 و4 و5 و7 فتتضمن انعكاساً؛ ولذلك يؤدي التعامل مع الاتجاه على أنه دوران فقط إلى نتيجة خاطئة مع بعض الماسحات والكاميرات الأمامية والملفات المحررة.
تستقبل هذه الإمكانية القيمة الرقمية بعد قراءتها من البيانات الوصفية وتعيد التصحيح الدقيق. وهي لا تفك ترميز الصورة ولا تغيّر البكسلات، بل تقدم تعليمة تحويل موثوقة يستطيع معالج الصور لديكم تطبيقها.
كيفية تطبيق التحويل الناتج
أرسلوا عدداً صحيحاً في الحقل orientation. يهم هذا الترتيب في الاتجاهين 5 و7 لأن الانعكاس والتدوير غير قابلين للتبديل؛ فقد يؤدي عكسهما إلى اتجاه منعكس مختلف. تمثل المطابقة القياسية الاتجاه 4 بانعكاس أفقي يتبعه تدوير 180 درجة، وهو مكافئ هندسياً لانعكاس رأسي.
يجعل اعتماد محور انعكاس قياسي واحد الشفرة اللاحقة أبسط، بينما يحافظ المؤشر الرأسي الصريح على ثبات بنية الاستجابة. يعيد الاتجاه 1 صفراً للدوران ومن دون انعكاس. تؤدي القيم خارج 1 إلى 8 والكسور والنصوص الرقمية والحقول المفقودة والأنواع الأخرى إلى خطأ إدخال غير صالح بدلاً من التخمين.
موضع فحص الاتجاه في مسار المعالجة
استخدموا هذا الحساب مباشرة بعد أن يقرأ محلل EXIF علامة Orientation، وقبل تغيير الحجم أو القص أو OCR أو اكتشاف الوجوه أو إنشاء الصور المصغرة. تجعل التسوية المبكرة الإحداثيات اللاحقة مرتبطة بالعرض المستقيم، فتمنع القص من الحافة الخطأ أو محاولة التعرف على سطور نص جانبية. إذا كان مفكك ترميز الصور يطبق اتجاه EXIF تلقائياً، فلا تطبقوا التحويل مرة ثانية؛ عطّلوا السلوك التلقائي أو استخدموا الاستجابة للفحص والتخطيط فقط.
بعد تحويل البكسلات فعلياً، يُستحسن عادة كتابة Orientation بالقيمة 1 أو حذف العلامة القديمة، لأن إبقاءها قد يدفع برنامج عرض متوافقاً إلى تكرار التصحيح. هذه الإمكانية حتمية ولا تستخدم بيانات الصورة أو الشبكة أو تخمينات خاصة بالجهاز، ولذلك تنتج العلامة نفسها التعليمة نفسها دائماً. كما تفيد في تدقيق المكتبات بواسطة ملفات اختبار منعكسة لا تكشفها الصور العادية غالباً.
حالات الاستخدام
تسوية الصور المرفوعة
حوّلوا علامة Orientation لكل ملف إلى تحويل قبل إنشاء الصور المصغرة، كي تحتوي جميع النسخ المشتقة على بكسلات مستقيمة فعلياً.
تهيئة الصور الممسوحة لـ OCR
صححوا البكسلات المدورة أو المنعكسة قبل بدء التعرف على النص وتحليل التخطيط والاستخراج المعتمد على الإحداثيات.
اختبار مكتبة لمعالجة الصور
قارنوا سلوك المكتبة مع القيم الثماني في EXIF بمطابقة قياسية ثابتة للتدوير والانعكاس.
الأسئلة الشائعة
ما القيم المقبولة؟
تُقبل قيم اتجاه EXIF الصحيحة من 1 إلى 8 فقط.
هل تدوّر هذه الإمكانية الصورة نفسها؟
لا. إنها تعيد التحويل اللازم لعرض البكسلات المخزنة بصورة مستقيمة، ثم تطبقه مكتبة معالجة الصور لديكم.
لماذا نحتاج إلى عمليات الانعكاس؟
تتضمن أربعة اتجاهات في EXIF انعكاساً. لا يستطيع التدوير وحده تمثيل الاتجاهات المنعكسة 2 و4 و5 و7 تمثيلاً صحيحاً.
هل أعكس الصورة أولًا أم أدوّرها أولًا؟
اعكس أولًا ثم دوّر باتجاه عقارب الساعة. يهم الترتيب في الاتجاهين 5 و7، لأن الانعكاس والتدوير لا يعطيان الصورة نفسها إذا تبادلا مكانيهما.
ماذا لو كان برنامج الصور يصحح الاتجاه تلقائيًا؟
عندها لا تطبّق التصحيح مرة ثانية، وإلا ظهرت الصورة مدوّرة مرتين. أوقف التصحيح التلقائي أو استخدم النتيجة للتحقق فقط مما يذكره الملف.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/image/exif-orientation-fix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"orientation":6}'const res = await fetch("https://api.kit.forhosting.com/image/exif-orientation-fix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"orientation": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/exif-orientation-fix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"orientation": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/exif-orientation-fix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"orientation":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"orientation":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/exif-orientation-fix", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"orientation": 6
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.exif_orientation_fix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 15 |
max_megapixels | 12 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
كيفية تطبيق التحويل الناتج
تكرر الاستجابة القيمة وتعيد rotation_degrees بقيمة 0 أو 90 أو 180 أو 270، مقيسة مع عقارب الساعة. كما تعيد المؤشرين المنطقيين flip_horizontal وflip_vertical. تكون قيمة operation_order هي flip_then_rotate، ولذلك يجب تطبيق الانعكاس المفعّل على شبكة البكسلات المخزنة قبل التدوير.
أسئلة تقنية
بأي ترتيب يُطبّق الانعكاس والتدوير؟
طبّقوا الانعكاس المحدد على البكسلات المخزنة أولاً، ثم دوّروا مع عقارب الساعة وفق rotation_degrees، كما تحدد operation_order.
ما تكلفة الاستخدام عبر API؟
يكلف كل طلب API مبلغ $0.002. ويمكن إجراء الحساب أيضاً في أداة المتصفح المجانية لأنه لا يحتاج إلى رفع ملف أو وصول إلى الشبكة.