13 KiB
Local Image Compress
اضغط ملفات PNG وJPEG مباشرة داخل خزنة Obsidian على جهازك، من دون خدمات سحابية أو واجهات API. قلّل المساحة التي تشغلها الصور بنسبة 30–70% من دون التضحية بالجودة.
Read in your language: English • العربية • Deutsch • Español • فارسی • Français • Bahasa Indonesia • Italiano • Nederlands • Polski • Português • Português (Brasil) • Русский • ไทย • Türkçe • Українська • Tiếng Việt • 日本語 • 한국어 • 中文简体 • 中文繁體
المحتويات
- الميزات
- التنسيقات المدعومة
- الإعدادات
- آلية العمل
- تخزين البيانات والنسخ الاحتياطية
- الأتمتة
- التكامل مع Paste Image Rename
- الخصوصية والسلوك الخارجي
- نصائح
- الأسئلة الشائعة
- الترخيص
الميزات
- ضغط محلي: تُضغط صور PNG وJPEG محليًا.
- الأوامر:
- ضغط كل الصور في الملاحظة: يعالج الصور المشار إليها أو المستخدمة في الملاحظة النشطة.
- ضغط كل الصور في المجلد: يتيح اختيار مجلد وضغط كل الصور المدعومة داخله مع استثناء مجلد الإخراج.
- ضغط كل الصور في الخزنة: يفحص الخزنة كاملة مع استثناء مجلد الإخراج.
- نقل الملفات المضغوطة: ينقل النتائج المضغوطة إلى مواقع الملفات الأصلية. قبل النقل، ينشئ نسخًا احتياطية من النسخ الأصلية والمضغوطة.
- الأتمتة:
- ضغط الملفات الجديدة تلقائيًا عند إضافتها
- الضغط في الخلفية بعد خمول المستخدم عندما يبلغ عدد الصور غير المضغوطة الحد المحدد
- الواجهة وسهولة الاستخدام:
- قائمة سياق للملفات والمجلدات
- مؤشر للمساحة الموفرة مع تلميح تفصيلي
- مؤشر تقدم في شريط الحالة
- الأمان والموثوقية:
- ذاكرة مؤقتة للملفات المعالجة مع نسخ احتياطية
- نسخ احتياطية قبل نقل الملفات المضغوطة مع إمكانية الحذف التلقائي
التنسيقات المدعومة
- PNG (مسار WASM باستخدام
imagequant) - JPEG/JPG (مسار WASM باستخدام
mozjpeg)
يتم تخطي WebP وGIF وBMP وHEIC/HEIF وAVIF عمدًا في هذا الإصدار لأن الإضافة لا تتضمن برامج ترميز لهذه التنسيقات.
الإعدادات
| الإعداد | الوصف | النوع/النطاق | الافتراضي |
|---|---|---|---|
| جودة PNG (الحد الأدنى-الأقصى) | نطاق جودة تكميم PNG مع فقد | 1-100 (مثل 65-80) |
65-80 |
| جودة JPEG | جودة ضغط JPEG | 1-95 | 85 |
| الجذور المسموح بها | مسارات نسبية يُسمح بالضغط داخلها. فارغ = الخزنة كاملة | قائمة نصوص | فارغ |
| مجلد الإخراج | المجلد الذي تُحفظ فيه الملفات المضغوطة | نص | Compressed |
| ضغط الملفات الجديدة تلقائيًا | ضغط الصور الجديدة عند إضافتها | منطقي | false |
| الضغط في الخلفية | الضغط في الخلفية عند الخمول | منطقي | true |
| حد الضغط في الخلفية | عدد الصور غير المضغوطة المطلوب لبدء الضغط تلقائيًا | 10-1000 | 50 |
| حد الخمول | دقائق بلا نشاط قبل بدء الضغط في الخلفية | 1-60 دقيقة | 2 |
| الاحتفاظ التلقائي بالنسخ الاحتياطية | حذف نسخ ما قبل النقل القديمة تلقائيًا | منطقي | false |
| مدة الاحتفاظ بالنسخ الاحتياطية | حذف نسخ النقل الأقدم من N يومًا عند تفعيل الاحتفاظ | 1-365 | 30 |
| النقل التلقائي للملفات المضغوطة | نقل الملفات إلى مواقع الصور الأصلية عند بدء التشغيل واستبدالها | منطقي | false |
| حد النقل التلقائي | عدد الملفات الجاهزة للنقل الذي يؤدي إلى بدء النقل تلقائيًا | 1-1000 | 50 |
آلية العمل
- تُحفظ الملفات المضغوطة في مجلد
Compressedمع الحفاظ على بنية المسارات الأصلية. - تسجل الذاكرة المؤقتة الملفات المعالجة وأحجامها الأصلية لمنع تكرار الضغط وحساب التوفير بدقة.
- ينقل أمر «نقل الملفات المضغوطة» الملفات من
Compressedإلى مواقعها الأصلية عندما يكون الأصل داخل جذر مسموح به. تُنشأ نسخة احتياطية قبل النقل.
عادةً ما يتم تخطي الملفات الصغيرة جدًا (<5KB لـ PNG و<10KB لـ JPEG).
حدود الأمان ثابتة: يتم تخطي الملفات الأكبر من 100 MB قبل قراءتها، والصور التي تتجاوز 100 مليون بكسل بعد فحص الترويسة.
تخزين البيانات والنسخ الاحتياطية
- الذاكرة المؤقتة الأساسية: تُحفظ في مجلد الإضافة.
- نسخ الذاكرة المؤقتة: تُحفظ في
Vault/.local-image-compress/backups/cache/ويُحتفظ بما يصل إلى 50 ملفًا. - نسخ الصور: تُحفظ في
Vault/.local-image-compress/backups/originals/وتُنشأ قبل استبدال الملفات الأصلية.
الأتمتة
- عند تفعيل «الضغط في الخلفية» يظهر شريطان:
- حد الضغط في الخلفية: 10–1000 صورة، الافتراضي 50.
- حد الخمول: 1–60 دقيقة، الافتراضي 2.
- عند تفعيل «مدة الاحتفاظ بالنسخ الاحتياطية» يظهر شريط مدة الاحتفاظ.
- عند تفعيل «النقل التلقائي للملفات المضغوطة» يظهر حد عدد الملفات. عند بدء التشغيل يبدأ النقل إذا بلغ عدد الملفات في
Compressedالحد أو تجاوزه.
التكامل مع Paste Image Rename
تعطّل هذه الإضافة مؤقتًا الإضافة الخارجية obsidian-paste-image-rename أثناء ضغط الملفات أو نقلها. لا يمكن إيقاف هذه الحماية لأن ربط الناتج المضغوط بملفه الأصلي يعتمد على عدم إعادة تسمية الملفات الجديدة بواسطة إضافة أخرى.
لماذا تحتاج هذه الحماية
سبب الحاجة إلى ذلك:
- تسجل Paste Image Rename معالجًا من نوع
vault.on("create")يعمل لكل صورة تُضاف إلى الخزنة خلال نحو ثانية من إنشائها. ويتعامل دائمًا مع الملفات التي يبدأ اسمها بـPasted image، ومع جميع الصور الأخرى عند تفعيل خيار "Handle all attachments". - عندما تكتب هذه الإضافة نسخًا مضغوطة في مجلد الإخراج، تشغّل الملفات الجديدة ذلك المعالج. مع وجود عرض Markdown نشط، تعيد Paste Image Rename تسمية الناتج الجديد، فتتعطل مطابقة الملف المضغوط مع الأصل، أو تعرض مربع إعادة تسمية لكل ملف. ومن دون عرض Markdown نشط، تعرض إشعار
Error: No active file foundلكل ملف، فتغمر الواجهة بالأخطاء أثناء المعالجة الجماعية. - لا توفر Obsidian واجهة عامة تسمح لإضافة بطلب إيقاف إضافة أخرى مؤقتًا؛ لذلك فإن تعطيل هذه الإضافة وحدها لمدة العملية هو الحل الموثوق الوحيد.
كيفية تنفيذ ذلك بأمان:
- لا تتأثر إلا الإضافة المعروفة ذات المعرّف
obsidian-paste-image-rename، وفقط أثناء الضغط أو النقل. - تُستعاد الإضافة بعد العملية مع إعادة المحاولة عند الحاجة، ما لم تتغير حالتها خارجيًا. تسجل الحماية ما إذا كانت هي التي عطّلتها ولا تحاول استعادتها بعد تغير خارجي.
- يستخدم التفعيل والتعطيل واجهة Obsidian الداخلية
app.pluginsلعدم وجود بديل عام. تُفحص الميزة قبل الاستدعاء وتُعالج الأخطاء دون تعطيل العملية.
الخصوصية والسلوك الخارجي
- الشبكة: لا تنفذ الإضافة أي طلبات شبكة أثناء التشغيل. برامج ترميز PNG/JPEG مضمّنة في
main.jsولا تُرفع الصور. - القياس والإعلانات: لا توجد تحليلات أو بيانات قياس أو تقارير أعطال أو تتبع أو إعلانات ديناميكية أو تحديث ذاتي.
- الحسابات والمدفوعات: لا يلزم حساب أو اشتراك أو مفتاح ترخيص أو دفع. لا تصل الإضافة إلى رابط التمويل الاختياري في manifest.
- ملفات الخزنة: تقرأ الإضافة الصور المدعومة التي تحددها الأوامر أو الأتمتة أو الجذور المسموح بها. تكتب النتائج في مجلد نسبي داخل الخزنة ولا تستبدل الأصل إلا عبر النقل اليدوي أو التلقائي الموثق بعد إنشاء النسخ الاحتياطية.
- الحالة المحلية: تُحفظ الذاكرة المؤقتة في مجلد الإضافة، وتُحفظ نسخ الذاكرة المؤقتة والنقل تحت
Vault/.local-image-compress/backups/. - الملفات الخارجية: تبقى البيانات المدارة داخل الخزنة الحالية. تطلب أوامر «فتح المجلد» من نظام التشغيل عرض مجلدات النسخ الموثقة فقط ولا تنقل بيانات.
- الإضافات الأخرى: قد تُعطّل
obsidian-paste-image-renameمؤقتًا أثناء الضغط أو النقل كما هو موضح أعلاه، ثم تُستعاد مع التحقق من ملكية التغيير.
نصائح
- نطاقات جودة مناسبة: PNG
65-80وJPEG 75-90. - اضبط «الجذور المسموح بها» إذا أردت ضغط مجلدات محددة فقط، مثل
files/أوimages/. - استخدم الضغط في الخلفية عندما تحتوي الخزنة على صور كثيرة غير مضغوطة.
الأسئلة الشائعة
تذكر الإضافة أن وحدات WebAssembly لم تتم تهيئتها. أعد تحميل الإضافة. إذا تكرر الخطأ، أرفق إصدار Obsidian والمنصة وخطأ وحدة التحكم بتقرير المشكلة.
أين تُحفظ الملفات المضغوطة؟
تُحفظ افتراضيًا في Compressed. لاستبدال الملفات الأصلية، استخدم «نقل الملفات المضغوطة».
كيف يُحسب التوفير؟ يكون الحساب دقيقًا عندما تحتوي الذاكرة المؤقتة على الحجم الأصلي وحجم الناتج. بالنسبة إلى ملفات PNG/JPEG غير المضغوطة، تستخدم الإضافة تقديرات محافظة بنسب محدودة؛ وتقرأ أحجام الملفات المضغوطة الحالية من القرص عند الحاجة.
الترخيص
GPL-3.0-or-later. تراخيص وإشعارات الجهات الخارجية: THIRD_PARTY_NOTICES.md.
