يُفتح هذا بمجرّد أن تختار ملفاً في الأعلى.جاهزة — اقطع الاتصال بالإنترنت وستظل تعمل.غير متاحة في هذا المتصفح (كل شيء آخر يظل يعمل).تحتاج إلى https:// أو localhost للتخزين المؤقت دون اتصال.التخزين المؤقت غير متاح هنا، لكن لا شيء يُرفع في الحالتين.ملفاتك لم تذهب إلى أي مكان. {total} ملفاً حُمِّلت، كلها ملفات هذه الصفحة نفسها. {platform}اتصل شيءٌ بـ {hosts}، وهو ما لا تفعله هذه الأداة أبداً. عُدَّ ذلك جديراً بالتحقيق. {platform}نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من مضيفٍ {hosts}؛ ولم يُعطَ واحد منها ملفاً ولا بايتاً منه.نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من {hosts} مضيفاً؛ ولم يُعطَ واحد منها ملفاً ولا بايتاً منه.حدث خطأ ما: {detail}. أعد تحميل الصفحة لتبدأ من جديد.جارٍ قراءة {count} ملف…جارٍ قراءة {count} ملف…جرّب مثالاًجارٍ إنشاء مثال…تعذّر على هذا المتصفّح إنشاء المثال. اختر ملفاً بدلاً من ذلك.
تكديس الصور — ادمج سلسلة لقطات، وملفات RAW معها
عشرون إطاراً في واحد، بلا عشرين رفعاً وبلا محوِّل RAW.
كل إطار يُفتح ويُفكّ ترميزه ويُحاذى ويُدمج ويُكتب في متصفحك أنت، على جهازك أنت. كدسة من عشرين ملف RAW حجم كل منها 60 ميغابايت هي نحو غيغابايت من الصور، ولا يتحرك منها بايت واحد: لا تملك الأداة أي وظيفة شبكية على الإطلاق، والملفات يقرأها من قرصك مباشرةً عاملٌ لا يملك أين يرسل شيئاً.
✗ بلا رفع
✗ بلا حساب
✗ بلا علامة مائية
✓ يقرأ RAW
✓ يعمل دون اتصال
✓ مفتوح المصدر
فحص حي:جارٍ الفحص…
دون اتصال:جارٍ الفحص…
لا تأخذ كلامنا: افتح أدوات المطوّر، وراقب لسان الشبكة، وكدّس مجلداً من ملفات RAW. لن يحمل طلبٌ واحد صورةً ولا مصغّرةً ولا اسم ملف ولا طراز كاميرا. أو افصل الإنترنت وكدّسها رغم ذلك، فلا يتغير في الأداة شيء.
كيف يمكن التحقق من وعد الخصوصية
ليس لصورك مكان تذهب إليه. تسمّي Content-Security-Policy كل عنوان يجوز لهذه الصفحة الاتصال به، وليس واحد منها لهذا الموقع. لا يوجد هنا طرفٌ تُجمَع عنده ملفاتك، ولا في الشيفرة ما يرسلها لو وُجد — لا fetch ولا XMLHttpRequest ولا sendBeacon، لا في src/ ولا في العامل.
ملفات RAW تُقرأ ولا تُرفع — وتُقرأ بالكاد. يحتوي ملف RAW من الكاميرا سلفاً على صورة JPEG بالحجم الكامل صيّرتها الكاميرا لحظة اللقطة. تجدها هذه الأداة بالمرور على بضعة مداخل دليل ثم بطلب شريحة واحدة، وهي في ملف حجمه 60 ميغابايت أقل من مئة كيلوبايت عادةً. وتعرض الصفحة ذلك الرقم إلى جوار حجم ملفاتك وأنت تعمل. أما بيانات المستشعر فلا تُقرأ قطّ.
العمل يجري في عاملٍ على هذا الجهاز، لا على خادم. هذه هي الأداة الوحيدة هنا التي تستعمل عاملاً، لأن التكديس دقائق من الحساب لا ثوانٍ، والصفحة المتجمّدة لا تُظهر تقدماً ولا تُلغى. والعامل خيطٌ ثانٍ داخل هذا المتصفح نفسه — انظر src/worker.js. تُسلَّم إليه الملفات نفسها، وذلك مجّاني لأن مقبض الملف ليس هو البايتات؛ وتحكمه Content-Security-Policy نفسها التي تحكم الصفحة، أي أنه بلا وجهةٍ يرسل إليها.
لا يُبلَّغ عن هذه المجموعة في أي مكان. كم إطاراً كدّست، وأي كاميرا كتبتها، وكم تحرّك كل منها، وأي طريقة اخترت، وكم استغرقت: كل ذلك يبقى في ذاكرة هذه الصفحة حتى تغلقها. لا يوجد في هذا المستودع حدث قياس خاص يحمل شيئاً منه، والسؤال الوحيد الذي يطرحه هذا الموقع بعد التنزيل يرسل إبهاماً إلى أعلى أو أسفل واسم الأداة، ولا شيء سواهما.
يعمل دون اتصال. افصل الشبكة ولا يتغير في الأداة شيء، لأنه لم تكن فيها خطوة شبكية قط. والعامل وكل وحدة يحمّلها يخزّنها عامل الخدمة الخاص بهذه الصفحة، فالنسخة المثبّتة تكدّس ملفات RAW والشبكة مفصولة.
تحقّق بنفسك. لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع dist — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر:
الملفات الجديرة بالقراءة أولا هي config/site.toml من أجل سياسة أمان المحتوى (Content-Security-Policy)، وsrc/raw.js لكيفية فتح ملف RAW بقراءة كيلوبايتات لا ميغابايتات، وsrc/stack.js لحساب كل طريقة، وsrc/plan.js لمصدر أرقام الذاكرة وفكّ الترميز التي تظهر على الصفحة — فهي أجوبة ذلك الملف لا تقديرات.
إذا حذّرك برنامج الحماية في عملك من رفع ملف. إنه يراقب لحظة اختيار ملف في المتصفّح، ولا يمكنه أن يعرف إن كانت الصفحة تنوي إرساله — فيحذّر عند الاختيار. لا شيء يُرسَل من هنا: افتح أدوات المطوّر في متصفّحك، وانتقل إلى Network، ثم اختر ملفاً. لا يوجد أي طلب يحمله، ولا أي طلب أصلاً عدا المعاينة المحلية للصفحة. وهو الفحص نفسه الذي يستطيع أي شخص في قسم تقنية المعلومات لديك إجراؤه في نصف دقيقة.
1 اختر الإطارات
تُفتح ملفات RAW بقراءة صورة JPEG بالحجم الكامل التي كتبتها الكاميرا داخلها سلفاً: بضعة كيلوبايتات من الدليل ثم شريحة واحدة. أما بيانات المستشعر فلا يُفكّ ترميزها قطّ، فيُفتح إطار حجمه 60 ميغابايت بسرعة صورة JPEG تقريباً. ماذا يعني ذلك للناتج.
اسحب أي إطار من مقبضه ⋮⋮ لإعادة ترتيب القائمة، أو اضغط سهمي الأعلى والأسفل والتركيز على المقبض. الترتيب لك: هو ترتيب السرد هنا لا غير، أما الإطار الذي تُحاذى إليه البقية فهو المعلَّم المرجع.
2 كيف تجتمع
اطرح ما تجاوز كلما خفضته طرح أكثر، وطرح معه تفاصيل حقيقية. وانحرافان معياريان هما نقطة البدء المعتادة.
تُقاس الحدّة على مدى الأكبر يأخذ مناطق كاملة من إطار واحد؛ والأصغر يتتبّع التفاصيل الدقيقة وقد يبعثر خلفيةً ملساء بين الإطارات.
إطار واحد{count} إطاراًلا إطارات بعدالمرجعاجعله المرجعحرّك {name} — بالسحب أو بسهمي الأعلى والأسفلأزل{width} × {height}RAW — معاينة الكاميرا نفسها، {width} × {height}{camera} — معاينة {width} × {height}لم تُوجد معاينة في ملف RAW هذاقُرئ {read} من {total}يأخذ متوسط كل إطار. الضجيج العشوائي يعلو بقدر ما ينخفض، فأخذ متوسط {count} إطاراً يخفضه نحو {factor} مرة. هي الطريقة لمجموعة ساكنة، وهي التي يفسدها طائر واحد عابر.يأخذ القيمة الوسطى لكل بكسل. وكل ما كان موجوداً في بعض الإطارات فقط، سائحٌ أو سيارة أو طائرة، يزول. وهي الطريقة الوحيدة التي عليها أن تمسك كل الإطارات دفعةً واحدة، ولذلك يمكن تقسيمها إلى أشرطة أدناه.يتعلّم ما يكونه كل بكسل عادةً، ثم يأخذ متوسط القيم الموافقة له وحدها. نتيجة الوسيط مع خفض الضجيج الذي للمتوسط. ويقرأ الإطارات مرتين.يبقي أسطع قيمة بلغها كل بكسل. وهو ما يجعل من سلسلة تعريضات قصيرة مساراتِ نجوم، ويجمع لعبةً ناريةً من إطارات انفجارها نفسه.يبقي أعتم قيمة بلغها كل بكسل. ولا يبقى البكسل ساطعاً إلا إن كان ساطعاً في كل إطار، فتزول الانعكاسات في الزجاج والمصابيح العابرة وقطرات المطر التي أضاءها الفلاش.يجمع الإطارات بلا قسمة: ما كان سيجمعه تعريضٌ أطول {count} مرة. وسيحترق بياضاً، تماماً كما كان ذلك التعريض ليحترق. أعده بمنزلق التعريض.يأخذ كل جزء من الصورة من الإطار الذي كان فيه حادّاً. صوّر شيئاً صغيراً على امتداد حلقة البؤرة، وهذا يجمع الأجزاء الحادّة.يجد كم أُزيح كل إطار ويعيده، إلى كسور من البكسل. يصحّح اهتزاز اليد وانزلاق الحامل الثلاثي. أما الدوران فلا يصحّحه.يجد الدوران والقياس أيضاً. يكلّف قياساً إضافياً لكل إطار، ولا يكلّف شيئاً البتة إن تبيّن أن الإطارات مستقيمة. والدوران لا يُستعاد إلا ضمن نصف دورة دائماً.يكدّس الإطارات كما تصل تماماً. صحيحٌ لحامل ثلاثي مثبَّت أو لسلسلة بفواصل، وخطأ لكل ما أُخذ باليد.كل إطار يفكّ مفكِّك ترميز المتصفح نفسه ترميزه بهذا الحجم، فالإعداد الأصغر عملٌ أقل لا ذاكرة أقل فحسب.يُضرب في الناتج في النهاية تماماً، بعد الحساب وقبل التقريب.جمع {count} إطاراً سيحترق بياضاً على الأرجح القريب من اليقين. اخفضه إلى نحو {suggested} لترى ما جُمِع.{width} × {height}نحو {mb} ميغابايت{count}، واحدة لكل إطار{count} — كل إطار، {passes} مرات{count} — كل إطار، مرةً لكل شريط من {bands}{read} من {total} على القرصهذا لا يتّسع في الذاكرة دفعةً واحدة، فستُقطع الصورة إلى {bands} شريطاً وتُقرأ الإطارات من جديد لكل شريط. واختيار {suggested} كان سيجعله مروراً واحداً.هذا لا يتّسع في الذاكرة دفعةً واحدة، فستُقطع الصورة إلى {bands} شريطاً وتُقرأ الإطارات من جديد لكل شريط. وإطاراتٌ أقل أو دقة عمل أصغر كانت ستجعله مروراً واحداً.يُنظر داخل {name}…يُقرأ {name}…يُقاس كم تحرّك {name}…يُكدَّس — قُرئ {done} من {total} إطاراًيُكدَّس — الشريط {band} من {bands}، قُرئ {done} من {total} إطاراًتُكتب الصورة…{width} × {height}، {size} — جُمِع {count} إطاراً في {seconds} ثانيةقِيس كل إطار ودُفع إلى مكانه.{count} من {total} إطاراً تعذّر قياسها بثقة فتُركت حيث كانت.كُدِّست الإطارات كما وصلت تماماً.{count} إطاراً أبلغت عن دوران أكبر مما يليق بسلسلة لقطات، فصُحِّحت بالإزاحة وحدها.دفعُها بعيداً عن بعضها ترك حوافّ لا يبلغها كل إطار، وقد قُصّت.أضف صورةً واحدة على الأقل أولاً.لم يُفتح أيٌّ من هذه الملفات كصورة.التكديس يحتاج إطارين على الأقل.حدث خطأ أثناء التكديس. إن كان أحد هذه الملفات غير مألوف، فجرّبه وحده.نفدت ذاكرة المتصفح. جرّب دقة عمل أصغر أو إطارات أقل.{name} لم يُفتح كصورة فبقي خارجاً.انتظر انتهاء هذه الكدسة قبل إضافة إطارات أخرى، أو ألغِها.صورك لم تذهب إلى أي مكان. {total} ملفاً حُمِّلت. {platform}اتصل شيءٌ بـ {hosts}، وهو ما لا تفعله هذه الأداة أبداً. {platform}نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من مضيفٍ {hosts}؛ ولم يُعطَ واحد منها صورةً.نصوصُ الإعلانات والقياس وزرّ التبرّع الخاصة بالصفحة حُمِّلت من {hosts} مضيفاً؛ ولم يُعطَ واحد منها صورةً.
هل أنجزت المهمة؟
ما الذي حدث خطأ؟
شكرا — هذا يساعد.
يُرسَل الجواب فقط، وفقط عند الضغط على زر. لا يُرسَل ملفك أبدا، ولا اسمه، ولا أي شيء عنه.
# تكديس الصور — ادمج سلسلة لقطات، وملفات RAW معها
عشرون إطاراً في واحد، بلا عشرين رفعاً وبلا محوِّل RAW.
> ادمج سلسلة لقطات في صورة واحدة: خذ متوسطها لتقتل الضجيج، أو خذ الوسيط لتزيل الناس من المشهد، أو أضئ لمسارات النجوم، أو كدّس بؤرة لقطة ماكرو. يقرأ CR2 وNEF وARW وDNG وRAF وCR3 باستخراج المعاينة التي كتبتها الكاميرا نفسها. يعمل كله داخل متصفحك.
هذه الصفحة أداة تفاعلية تعمل بالكامل داخل متصفحك، على العنوان https://abox.tools/ar/تكديس-الصور/ — ولا يُرفَع أي شيء تعطيه إياها. وفيما يلي كل ما تقوله الصفحة عن الأداة بالكلمات؛ لاستخدامها، افتح العنوان.
## صورك لا تُرفع **أبدا**. لا يوجد خادم.
كل إطار يُفتح ويُفكّ ترميزه ويُحاذى ويُدمج ويُكتب في متصفحك أنت، على جهازك أنت. كدسة من عشرين ملف RAW حجم كل منها 60 ميغابايت هي نحو غيغابايت من الصور، ولا يتحرك منها بايت واحد: لا تملك الأداة أي وظيفة شبكية على الإطلاق، والملفات يقرأها من قرصك مباشرةً عاملٌ لا يملك أين يرسل شيئاً.
- ✗ بلا رفع
- ✗ بلا حساب
- ✗ بلا علامة مائية
- ✓ يقرأ RAW
- ✓ يعمل دون اتصال
- ✓ مفتوح المصدر
## كيف تكدّس مجموعة صور في متصفحك
1. **اختر الإطارات.** سلسلة لقطات، أو مجموعة بتدرّج تعريض، أو تسلسل من مؤقّت فواصل، أو مجلد من ملفات RAW. يُفتح كل ملف حين يصل، ويخبرك سطره بما خرج منه — ولملف RAW: الكاميرا، وحجم المعاينة التي وُجدت داخله، وكم كان قليلاً ما لزم قراءته من الملف للعثور عليها.
2. **اختر الطريقة التي تناسب ما تريد أن تفقده.** الضجيج: المتوسط، أو قصّ سيغما إن تحرّك شيء. الناس أو السيارات أو طائرة عابرة: الوسيط. سماءٌ مظلمة تريدها مسارات نجوم: إضاءة. لقطة ماكرو مأخوذة على امتداد حلقة البؤرة: تكديس البؤرة. والملاحظة تحت القائمة تقول ماذا تفعل كل طريقة بعدد إطاراتك أنت.
3. **قرّر إن كانت الإطارات تحتاج محاذاة.** باليد: نعم، إزاحة فقط. باليد وكنت تدور أيضاً: إزاحة ودوران وقياس. حاملٌ ثلاثيّ مثبَّت أو مؤقّت فواصل: لا، وسيكون أسرع. كل إطار يُقاس قياساً إلى الإطار المعلَّم مرجعاً، وهو الأول ما لم تقل غير ذلك: «اجعله المرجع» ينقل العلامة ويترك القائمة على ترتيبها الذي وضعتها به.
4. **اقرأ الأرقام الأربعة، ثم اضغط الزر.** قبل أن يجري أي شيء، تقول الصفحة كم سيكون حجم الناتج، وكم ذاكرة سيأخذ تقريباً، وكم مرة ستُفكّ ترميز الإطارات، وكم قُرئ من ملفاتك. وإن كانت المجموعة لا تتّسع في الذاكرة دفعةً واحدة قالت ذلك، وقالت أي دقة عمل تصلحه.
## النسخة الأطول
[كيف تكدّس الصور لتقليل الضجيج أو لإزالة الناس](https://abox.tools/ar/أدلة/تكديس-الصور-لتقليل-الضجيج/): التكديس يدمج سلسلة لقطات في صورة واحدة. والطريقة التي تحتاجها تتوقف على ما تريد أن تفقده: الضجيج، أو المارّة، أو عمق الميدان الضحل في لقطة ماكرو. كيف تعمل كل طريقة، وما ثمنها، وأين تقع ملفات RAW من ذلك.
## أيضا في الصندوق
- [طمس الصور](https://abox.tools/ar/طمس-الصورة/): ما تغطّيه يُحذَف من الملف، لا يُغطَّى داخله.
- [عارض EXIF ومُزيله](https://abox.tools/ar/إزالة-بيانات-exif/): انظر ماذا تقول صورتك عنك. ثم أخرِجه منها.
- [عارض DICOM](https://abox.tools/ar/عارض-dicom/): CT وMR والأشعة السينية والموجات فوق الصوتية، ومعها النافذة والترويسة والقياسات.
- [الصورة إلى ICO](https://abox.tools/ar/إنشاء-فافيكون/): صورة واحدة تدخل. وتخرج بكل حجم يطلبه متصفح أو Windows أو Mac.
## أسئلة
### هل تُرفع صوري إلى أي مكان؟
لا. كل إطار يُفتح ويُفكّ ترميزه ويُحاذى ويُكدَّس ويُكتب في متصفحك أنت على عتادك أنت. لا تملك هذه الأداة أي وظيفة شبكية على الإطلاق — لا تجلب شيئاً ولا ترسل شيئاً — و`Content-Security-Policy` الخاصة بالصفحة تسمّي كل عنوان يجوز لها الاتصال به، وليس واحد منها لهذا الموقع. حمِّل الصفحة مرة، وافصل الإنترنت، وستظل تعمل. وهذا هنا أهمّ منه في أكثر الأدوات لسبب واحد هو الحجم: كدسة من عشرين إطار RAW نحو غيغابايت، ورفع غيغابايت من الصور لتُؤخذ منها متوسطة هو تحديداً ما وُجدت هذه الأداة لتجنّبه.
### أي صيغ RAW يقرأ، وكيف؟
CR2 وCR3 وNEF وNRW وARW وSR2 وSRF وDNG وORF وRAF وRW2 وPEF وSRW و3FR وIIQ وDCR وKDC وMRW وMEF وRWL وبضع صيغ أخرى — أي أكثر ما تكتبه الكاميرات. والذي يقرؤه منها هو معاينة JPEG بالحجم الكامل التي صيّرتها الكاميرا نفسها لحظة اللقطة: الصورة التي تراها على ظهر الكاميرا، والتي يرسمها نظام تشغيلك مصغَّرةً. يُعثر عليها بالمرور على بنية دليل الملف، وذلك يكلّف بضع قراءات كلٌّ منها بضعة كيلوبايتات، ثم أخذ شريحة واحدة. **وليست هذه فكّ تشابك لبيانات المستشعر.** فالناتج يحمل توازن أبيض الكاميرا ونمط صورتها بثمانية بتات للقناة، لا اثني عشر أو أربعة عشر بتاً من بيانات مستشعر خطّية كما يعطيك محوِّل RAW.
### ولماذا لا تُفكّ ترميز بيانات المستشعر كما ينبغي؟
لأن ذلك يعني ضمّ LibRaw أو dcraw — محرّكٌ ثانٍ بعشرات الميغابايتات، لعائلة صيغ واحدة، معظمه مخططات ضغط خاصة بكل صانع. وهذه المقايضة محسومة في `docs/what-can-be-built-here.md` في مصدر هذا الموقع، حيث كان RAW الكاميرات على قائمة المستبعَد قبل وجود هذه الأداة. والذي تغيّر ليس الجواب عن ذلك السؤال، بل اكتشاف أن التكديس لا يحتاجه: فالمعاينات بدقة كاملة، وهي ما كانت الكاميرا ستعطيك إياه JPEG على أي حال، وقراءتها أسرع نحو مئة مرة من فكّ التشابك. وإن أردت بيانات المستشعر فحمّض الإطارات في محوِّل RAW أولاً وكدّس ما ينتجه من TIFF أو JPEG — فهذه الأداة تأخذها أيضاً.
### كم إطاراً يحتمل، وبأي حجم؟
ستٌّ من الطرائق السبع تتدفّق: تمسك مُراكِماً واحداً وتقرأ كل إطار مرة واحدة بالضبط، فمئة إطار تكلّف من الذاكرة ما يكلّفه إطاران، والذي يكبر هو الوقت وحده. والوسيط هو الاستثناء، لأن القيمة الوسطى لمجموعة لا تُعرف حتى تكتمل كلها، فيمسك كل الإطارات دفعةً واحدة — وعشرون إطاراً بأربعة وعشرين ميغابكسل نحو 1.4 غيغابايت، وهو ما لن يمنحك إياه متصفح. وحين يقع ذلك تُقطَع الصورة إلى أشرطة أفقية وتُكدَّس شريطاً شريطاً، وثمنه إعادة قراءة الإطارات لكل شريط. تحسب الصفحة هذا كله قبل أن تضغط الزر وتعرض عليك الرقم، فلا يكون البطء مفاجأة.
### ماذا تفعل محاذاة الإطارات فعلاً؟
تجد كم تحرّك كل إطار قياساً إلى الإطار المرجع وتعيده، إلى كسر من البكسل. والطريقة هي الارتباط الطوري: الإزاحة بين صورتين تظهر فرقاً في الطور بين طيفيهما، فتحويل فورييه واحد لكلٍّ منهما يجد إزاحة مقدارها مئتا بكسل بثمن إزاحة مقدارها بكسلان. والإعداد الثاني يستعيد الدوران والقياس أيضاً، بالحيلة نفسها مطبَّقةً على الطيف في إحداثيات لوغاريتمية قطبية. وهذا كله شامل — إزاحة واحدة وزاوية واحدة وقياس واحد للإطار كله — فهو يصحّح كاميرا تحرّكت ولا يصحّح موضوعاً تحرّك، ولا صورةً أُخذت من خطوةٍ إلى اليسار. وله نتيجة مرئية واحدة: إطارٌ أُزيح عشرين بكسلاً إلى اليسار لم يعد يبلغ الحافة اليمنى، فيُقصّ الناتج إلى الجزء الذي تغطّيه كل الإطارات. ولهذا تعود الكدسة المحاذاة أصغر قليلاً جداً من الإطارات التي دخلت فيها، وهو البديل الوحيد عن حافةٍ سوداء مصنوعة من إطارات لم تكن هناك.
### أي طريقة أستعمل؟
**المتوسط** للضجيج، في مجموعة لم يتحرّك فيها شيء: يقلّ الضجيج العشوائي بمقدار الجذر التربيعي لعدد الإطارات تقريباً. و**الوسيط** لإزالة ما كان هناك بعض الوقت فقط — والاستعمال الكلاسيكي تصوير ساحة مزدحمة عشر مرات أو نحوها والحصول عليها فارغة. و**قصّ سيغما** حين تريد الاثنين: يتعلّم ما يكونه كل بكسل عادةً ثم يأخذ متوسط القيم الموافقة له وحدها، فتجتمع له مناعة الوسيط من سيارةٍ عابرة وخفضُ الضجيج الذي للمتوسط. و**الإضاءة** لمسارات النجوم والألعاب النارية والرسم بالضوء. و**الإعتام** لإزالة أي شيء ساطع تحرّك. و**الجمع** لمحاكاة تعريض طويل واحد. و**تكديس البؤرة** للقطة ماكرو مأخوذة على امتداد حلقة البؤرة.
### لماذا ناتجي بثمانية بتات وملفات RAW عندي بأربعة عشر؟
لأن المكدَّس هو معاينة الكاميرا نفسها، وهي JPEG. ويستحق أن يُقال إن التكديس يستعيد بعض ثمن ذلك: متوسط ستة عشر إطاراً بثمانية بتات يعطي ناتجاً بتدرّجات أدقّ حقاً مما كان في أيٍّ منها، لأن الضجيج نفسه الذي جعل تقريب كل إطار مختلفاً هو ما يسمح للمتوسط أن يحطّ بين المستويات. والحساب هنا بفاصلة عائمة ويُقرَّب مرة واحدة في النهاية تماماً، فلا يُرمى شيء في الطريق. ومع ذلك فهو ليس كتكديس بيانات مستشعر خطّية، وهذه الأداة لا تدّعي غير ذلك.
### أيمكنني تكديس إطارات بأحجام مختلفة أو من كاميرات مختلفة؟
نعم، وإن كان ذلك خطأً في العادة ويستحق التأكد من أنك قصدته. يأخذ الناتج حجم أكبر إطار، ويُقاس كل إطار آخر ليتّسع فيه ويُوسَّط داخله. وخلط الكاميرات يخلط أيضاً تفسير الألوان، فمتوسط الاثنين متوسطُ تفسيرين مختلفين لضوءٍ واحد. أما حيث ينفع حقاً فهو مجموعة صُوِّرت بدقّتين، أو ملف RAW وJPEG للإطار نفسه.
### يقول إن التشغيل سيكون بأشرطة. ما معنى ذلك؟
أن ذاكرة العمل التي تحتاجها الطريقة أكثر مما تقبل الأداة حجزه دفعةً واحدة، فستُقطَع الصورة إلى أشرطة أفقية وتُكدَّس شريطاً شريطاً. والناتج هو نفسه تماماً؛ غير أنها تعيد قراءة الإطارات لكل شريط، فتطول المدة، وتخبرك الصفحة كم عملية فكّ ترميز ستكون. وخفض دقة العمل درجةً واحدة يقسم الذاكرة على أربعة، وهو ما يحوّل التشغيل بالأشرطة إلى مرور واحد في أغلب الأحوال — والملاحظة تقول أي إعداد يفعل ذلك.
### لماذا تستعمل هذه الأداة عاملاً ولا تستعمله الأخريات؟
لأنها الوحيدة التي يُقاس عملها بالدقائق. كل أداة أخرى هنا تفعل شيئاً يستغرق ثانية أو ثانيتين، ونقل العمل خارج الخيط الرئيسي هناك مراسم لا أكثر. أما تكديس عشرين إطاراً كبيراً فحسابٌ صلب على مئات الميغابايتات، ومعناه على الخيط الرئيسي صفحةٌ متجمّدة: لا شريط تقدّم يتحرّك، وزرّ إلغاء لا يجيب، ومتصفحٌ في النهاية يعرض إغلاق اللسان. والعامل خيطٌ ثانٍ في هذا المتصفح نفسه، يشغّل ملفاً من هذا المجلد نفسه، تحت هذه السياسة نفسها. ليس خادماً وليس وظيفة شبكية.
### هل هي مجانية، وهل أحتاج حساباً؟
مجانية، ولا حساب ولا تسجيل دخول ولا فترة تجربة ولا علامة مائية. ولا حدّ لعدد الإطارات التي تكدّسها ولا لحجمها، لأنه لا خادم يدفع ثمن ذلك — فالعمل يجري على جهازك أنت والسقف الوحيد ذاكرتك أنت. يعرض الموقع إعلانات، وهي التي تدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن صورك.
## كيف يمكن التحقق من وعد الخصوصية
- **ليس لصورك مكان تذهب إليه.** تسمّي Content-Security-Policy كل عنوان يجوز لهذه الصفحة الاتصال به، وليس واحد منها لهذا الموقع. لا يوجد هنا طرفٌ تُجمَع عنده ملفاتك، ولا في الشيفرة ما يرسلها لو وُجد — لا `fetch` ولا `XMLHttpRequest` ولا `sendBeacon`، لا في `src/` ولا في العامل.
- **ملفات RAW تُقرأ ولا تُرفع — وتُقرأ بالكاد.** يحتوي ملف RAW من الكاميرا سلفاً على صورة JPEG بالحجم الكامل صيّرتها الكاميرا لحظة اللقطة. تجدها هذه الأداة بالمرور على بضعة مداخل دليل ثم بطلب شريحة واحدة، وهي في ملف حجمه 60 ميغابايت أقل من مئة كيلوبايت عادةً. وتعرض الصفحة ذلك الرقم إلى جوار حجم ملفاتك وأنت تعمل. أما بيانات المستشعر فلا تُقرأ قطّ.
- **العمل يجري في عاملٍ على هذا الجهاز، لا على خادم.** هذه هي الأداة الوحيدة هنا التي تستعمل عاملاً، لأن التكديس دقائق من الحساب لا ثوانٍ، والصفحة المتجمّدة لا تُظهر تقدماً ولا تُلغى. والعامل خيطٌ ثانٍ داخل هذا المتصفح نفسه — انظر `src/worker.js`. تُسلَّم إليه الملفات نفسها، وذلك مجّاني لأن مقبض الملف ليس هو البايتات؛ وتحكمه Content-Security-Policy نفسها التي تحكم الصفحة، أي أنه بلا وجهةٍ يرسل إليها.
- **لا يُبلَّغ عن هذه المجموعة في أي مكان.** كم إطاراً كدّست، وأي كاميرا كتبتها، وكم تحرّك كل منها، وأي طريقة اخترت، وكم استغرقت: كل ذلك يبقى في ذاكرة هذه الصفحة حتى تغلقها. لا يوجد في هذا المستودع حدث قياس خاص يحمل شيئاً منه، والسؤال الوحيد الذي يطرحه هذا الموقع بعد التنزيل يرسل إبهاماً إلى أعلى أو أسفل واسم الأداة، ولا شيء سواهما.
- **يعمل دون اتصال.** افصل الشبكة ولا يتغير في الأداة شيء، لأنه لم تكن فيها خطوة شبكية قط. والعامل وكل وحدة يحمّلها يخزّنها عامل الخدمة الخاص بهذه الصفحة، فالنسخة المثبّتة تكدّس ملفات RAW والشبكة مفصولة.
**تحقّق بنفسك.** لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع `dist` — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر: https://github.com/A-Box-of-Tools/website
الملفات الجديرة بالقراءة أولا هي `config/site.toml` من أجل سياسة أمان المحتوى (Content-Security-Policy)، و`src/raw.js` لكيفية فتح ملف RAW بقراءة كيلوبايتات لا ميغابايتات، و`src/stack.js` لحساب كل طريقة، و`src/plan.js` لمصدر أرقام الذاكرة وفكّ الترميز التي تظهر على الصفحة — فهي أجوبة ذلك الملف لا تقديرات.
كيف تكدّس مجموعة صور في متصفحك
اختر الإطارات. سلسلة لقطات، أو مجموعة بتدرّج تعريض، أو تسلسل من مؤقّت فواصل، أو مجلد من ملفات RAW. يُفتح كل ملف حين يصل، ويخبرك سطره بما خرج منه — ولملف RAW: الكاميرا، وحجم المعاينة التي وُجدت داخله، وكم كان قليلاً ما لزم قراءته من الملف للعثور عليها.
اختر الطريقة التي تناسب ما تريد أن تفقده. الضجيج: المتوسط، أو قصّ سيغما إن تحرّك شيء. الناس أو السيارات أو طائرة عابرة: الوسيط. سماءٌ مظلمة تريدها مسارات نجوم: إضاءة. لقطة ماكرو مأخوذة على امتداد حلقة البؤرة: تكديس البؤرة. والملاحظة تحت القائمة تقول ماذا تفعل كل طريقة بعدد إطاراتك أنت.
قرّر إن كانت الإطارات تحتاج محاذاة. باليد: نعم، إزاحة فقط. باليد وكنت تدور أيضاً: إزاحة ودوران وقياس. حاملٌ ثلاثيّ مثبَّت أو مؤقّت فواصل: لا، وسيكون أسرع. كل إطار يُقاس قياساً إلى الإطار المعلَّم مرجعاً، وهو الأول ما لم تقل غير ذلك: «اجعله المرجع» ينقل العلامة ويترك القائمة على ترتيبها الذي وضعتها به.
اقرأ الأرقام الأربعة، ثم اضغط الزر. قبل أن يجري أي شيء، تقول الصفحة كم سيكون حجم الناتج، وكم ذاكرة سيأخذ تقريباً، وكم مرة ستُفكّ ترميز الإطارات، وكم قُرئ من ملفاتك. وإن كانت المجموعة لا تتّسع في الذاكرة دفعةً واحدة قالت ذلك، وقالت أي دقة عمل تصلحه.
النسخة الأطول
كيف تكدّس الصور لتقليل الضجيج أو لإزالة الناسالتكديس يدمج سلسلة لقطات في صورة واحدة. والطريقة التي تحتاجها تتوقف على ما تريد أن تفقده: الضجيج، أو المارّة، أو عمق الميدان الضحل في لقطة ماكرو. كيف تعمل كل طريقة، وما ثمنها، وأين تقع ملفات RAW من ذلك.
لا. كل إطار يُفتح ويُفكّ ترميزه ويُحاذى ويُكدَّس ويُكتب في متصفحك أنت على عتادك أنت. لا تملك هذه الأداة أي وظيفة شبكية على الإطلاق — لا تجلب شيئاً ولا ترسل شيئاً — وContent-Security-Policy الخاصة بالصفحة تسمّي كل عنوان يجوز لها الاتصال به، وليس واحد منها لهذا الموقع. حمِّل الصفحة مرة، وافصل الإنترنت، وستظل تعمل. وهذا هنا أهمّ منه في أكثر الأدوات لسبب واحد هو الحجم: كدسة من عشرين إطار RAW نحو غيغابايت، ورفع غيغابايت من الصور لتُؤخذ منها متوسطة هو تحديداً ما وُجدت هذه الأداة لتجنّبه.
أي صيغ RAW يقرأ، وكيف؟
CR2 وCR3 وNEF وNRW وARW وSR2 وSRF وDNG وORF وRAF وRW2 وPEF وSRW و3FR وIIQ وDCR وKDC وMRW وMEF وRWL وبضع صيغ أخرى — أي أكثر ما تكتبه الكاميرات. والذي يقرؤه منها هو معاينة JPEG بالحجم الكامل التي صيّرتها الكاميرا نفسها لحظة اللقطة: الصورة التي تراها على ظهر الكاميرا، والتي يرسمها نظام تشغيلك مصغَّرةً. يُعثر عليها بالمرور على بنية دليل الملف، وذلك يكلّف بضع قراءات كلٌّ منها بضعة كيلوبايتات، ثم أخذ شريحة واحدة. وليست هذه فكّ تشابك لبيانات المستشعر. فالناتج يحمل توازن أبيض الكاميرا ونمط صورتها بثمانية بتات للقناة، لا اثني عشر أو أربعة عشر بتاً من بيانات مستشعر خطّية كما يعطيك محوِّل RAW.
ولماذا لا تُفكّ ترميز بيانات المستشعر كما ينبغي؟
لأن ذلك يعني ضمّ LibRaw أو dcraw — محرّكٌ ثانٍ بعشرات الميغابايتات، لعائلة صيغ واحدة، معظمه مخططات ضغط خاصة بكل صانع. وهذه المقايضة محسومة في docs/what-can-be-built-here.md في مصدر هذا الموقع، حيث كان RAW الكاميرات على قائمة المستبعَد قبل وجود هذه الأداة. والذي تغيّر ليس الجواب عن ذلك السؤال، بل اكتشاف أن التكديس لا يحتاجه: فالمعاينات بدقة كاملة، وهي ما كانت الكاميرا ستعطيك إياه JPEG على أي حال، وقراءتها أسرع نحو مئة مرة من فكّ التشابك. وإن أردت بيانات المستشعر فحمّض الإطارات في محوِّل RAW أولاً وكدّس ما ينتجه من TIFF أو JPEG — فهذه الأداة تأخذها أيضاً.
كم إطاراً يحتمل، وبأي حجم؟
ستٌّ من الطرائق السبع تتدفّق: تمسك مُراكِماً واحداً وتقرأ كل إطار مرة واحدة بالضبط، فمئة إطار تكلّف من الذاكرة ما يكلّفه إطاران، والذي يكبر هو الوقت وحده. والوسيط هو الاستثناء، لأن القيمة الوسطى لمجموعة لا تُعرف حتى تكتمل كلها، فيمسك كل الإطارات دفعةً واحدة — وعشرون إطاراً بأربعة وعشرين ميغابكسل نحو 1.4 غيغابايت، وهو ما لن يمنحك إياه متصفح. وحين يقع ذلك تُقطَع الصورة إلى أشرطة أفقية وتُكدَّس شريطاً شريطاً، وثمنه إعادة قراءة الإطارات لكل شريط. تحسب الصفحة هذا كله قبل أن تضغط الزر وتعرض عليك الرقم، فلا يكون البطء مفاجأة.
ماذا تفعل محاذاة الإطارات فعلاً؟
تجد كم تحرّك كل إطار قياساً إلى الإطار المرجع وتعيده، إلى كسر من البكسل. والطريقة هي الارتباط الطوري: الإزاحة بين صورتين تظهر فرقاً في الطور بين طيفيهما، فتحويل فورييه واحد لكلٍّ منهما يجد إزاحة مقدارها مئتا بكسل بثمن إزاحة مقدارها بكسلان. والإعداد الثاني يستعيد الدوران والقياس أيضاً، بالحيلة نفسها مطبَّقةً على الطيف في إحداثيات لوغاريتمية قطبية. وهذا كله شامل — إزاحة واحدة وزاوية واحدة وقياس واحد للإطار كله — فهو يصحّح كاميرا تحرّكت ولا يصحّح موضوعاً تحرّك، ولا صورةً أُخذت من خطوةٍ إلى اليسار. وله نتيجة مرئية واحدة: إطارٌ أُزيح عشرين بكسلاً إلى اليسار لم يعد يبلغ الحافة اليمنى، فيُقصّ الناتج إلى الجزء الذي تغطّيه كل الإطارات. ولهذا تعود الكدسة المحاذاة أصغر قليلاً جداً من الإطارات التي دخلت فيها، وهو البديل الوحيد عن حافةٍ سوداء مصنوعة من إطارات لم تكن هناك.
أي طريقة أستعمل؟
المتوسط للضجيج، في مجموعة لم يتحرّك فيها شيء: يقلّ الضجيج العشوائي بمقدار الجذر التربيعي لعدد الإطارات تقريباً. والوسيط لإزالة ما كان هناك بعض الوقت فقط — والاستعمال الكلاسيكي تصوير ساحة مزدحمة عشر مرات أو نحوها والحصول عليها فارغة. وقصّ سيغما حين تريد الاثنين: يتعلّم ما يكونه كل بكسل عادةً ثم يأخذ متوسط القيم الموافقة له وحدها، فتجتمع له مناعة الوسيط من سيارةٍ عابرة وخفضُ الضجيج الذي للمتوسط. والإضاءة لمسارات النجوم والألعاب النارية والرسم بالضوء. والإعتام لإزالة أي شيء ساطع تحرّك. والجمع لمحاكاة تعريض طويل واحد. وتكديس البؤرة للقطة ماكرو مأخوذة على امتداد حلقة البؤرة.
لماذا ناتجي بثمانية بتات وملفات RAW عندي بأربعة عشر؟
لأن المكدَّس هو معاينة الكاميرا نفسها، وهي JPEG. ويستحق أن يُقال إن التكديس يستعيد بعض ثمن ذلك: متوسط ستة عشر إطاراً بثمانية بتات يعطي ناتجاً بتدرّجات أدقّ حقاً مما كان في أيٍّ منها، لأن الضجيج نفسه الذي جعل تقريب كل إطار مختلفاً هو ما يسمح للمتوسط أن يحطّ بين المستويات. والحساب هنا بفاصلة عائمة ويُقرَّب مرة واحدة في النهاية تماماً، فلا يُرمى شيء في الطريق. ومع ذلك فهو ليس كتكديس بيانات مستشعر خطّية، وهذه الأداة لا تدّعي غير ذلك.
أيمكنني تكديس إطارات بأحجام مختلفة أو من كاميرات مختلفة؟
نعم، وإن كان ذلك خطأً في العادة ويستحق التأكد من أنك قصدته. يأخذ الناتج حجم أكبر إطار، ويُقاس كل إطار آخر ليتّسع فيه ويُوسَّط داخله. وخلط الكاميرات يخلط أيضاً تفسير الألوان، فمتوسط الاثنين متوسطُ تفسيرين مختلفين لضوءٍ واحد. أما حيث ينفع حقاً فهو مجموعة صُوِّرت بدقّتين، أو ملف RAW وJPEG للإطار نفسه.
يقول إن التشغيل سيكون بأشرطة. ما معنى ذلك؟
أن ذاكرة العمل التي تحتاجها الطريقة أكثر مما تقبل الأداة حجزه دفعةً واحدة، فستُقطَع الصورة إلى أشرطة أفقية وتُكدَّس شريطاً شريطاً. والناتج هو نفسه تماماً؛ غير أنها تعيد قراءة الإطارات لكل شريط، فتطول المدة، وتخبرك الصفحة كم عملية فكّ ترميز ستكون. وخفض دقة العمل درجةً واحدة يقسم الذاكرة على أربعة، وهو ما يحوّل التشغيل بالأشرطة إلى مرور واحد في أغلب الأحوال — والملاحظة تقول أي إعداد يفعل ذلك.
لماذا تستعمل هذه الأداة عاملاً ولا تستعمله الأخريات؟
لأنها الوحيدة التي يُقاس عملها بالدقائق. كل أداة أخرى هنا تفعل شيئاً يستغرق ثانية أو ثانيتين، ونقل العمل خارج الخيط الرئيسي هناك مراسم لا أكثر. أما تكديس عشرين إطاراً كبيراً فحسابٌ صلب على مئات الميغابايتات، ومعناه على الخيط الرئيسي صفحةٌ متجمّدة: لا شريط تقدّم يتحرّك، وزرّ إلغاء لا يجيب، ومتصفحٌ في النهاية يعرض إغلاق اللسان. والعامل خيطٌ ثانٍ في هذا المتصفح نفسه، يشغّل ملفاً من هذا المجلد نفسه، تحت هذه السياسة نفسها. ليس خادماً وليس وظيفة شبكية.
هل هي مجانية، وهل أحتاج حساباً؟
مجانية، ولا حساب ولا تسجيل دخول ولا فترة تجربة ولا علامة مائية. ولا حدّ لعدد الإطارات التي تكدّسها ولا لحجمها، لأنه لا خادم يدفع ثمن ذلك — فالعمل يجري على جهازك أنت والسقف الوحيد ذاكرتك أنت. يعرض الموقع إعلانات، وهي التي تدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن صورك.