libjpeg
libjpeg مكتبة مجانية تحتوي على وظائف لمعالجة بيانات صور JPEG . تُنفّذ المكتبة برنامج ترميز JPEG (الترميز وفك الترميز) بالإضافة إلى أدوات مساعدة متنوعة لمعالجة بيانات JPEG. كُتبت المكتبة بلغة C وتُوزّع كبرنامج مجاني مع شفرتها المصدرية بموجب ترخيص برمجيات حرة مُخصّص ( شبيه بترخيص BSD )، والذي يُلزم بالإشارة إلى المصدر . تتولى مجموعة JPEG المستقلة (IJG) صيانة ونشر النسخة الأصلية. في الوقت نفسه، توجد عدة نسخ مُعدّلة تتضمن ميزات إضافية.
تُستخدم صور JPEG وJFIF على نطاق واسع على الإنترنت. ويمكن تعديل مقدار الضغط لتحقيق التوازن المطلوب بين حجم الملف وجودة الصورة. [ 4 ]
المرافق
يتم شحن برامج الأدوات المساعدة التالية مع مكتبة libjpeg:
- cjpeg و djpeg
- لإجراء التحويلات بين JPEG وبعض تنسيقات ملفات الصور الشائعة الأخرى.
- rdjpgcom و wrjpgcom
- لإدراج واستخراج التعليقات النصية في ملفات JPEG.
- jpegtran
- لتحويل ملفات JPEG الموجودة.
jpegtran

يوفر برنامج سطر الأوامر jpegtran العديد من الميزات لإعادة تنسيق وإعادة ترميز تمثيل معاملات تحويل جيب التمام المنفصل (DCT) ، ولتحويل بيانات الصورة الفعلية، وللتخلص من البيانات المساعدة في ملفات JPEG. وتشمل التحويلات المتعلقة بتمثيل المعاملات ما يلي:
- تحسين طبقة ترميز هوفمان لملف JPEG لزيادة الضغط،
- التحويل بين تنسيقات JPEG التدريجية والمتسلسلة،
- التحويل بين ترميز هوفمان والترميز الحسابي في طبقة ترميز الإنتروبيا . [ 5 ] [ 6 ] [ 7 ]
تُجرى هذه التحويلات دون فقدان أي بيانات، وهي قابلة للعكس تمامًا. وتشمل التحويلات على بيانات الصورة ما يلي:
- إزالة البيانات غير القياسية الخاصة بالتطبيقات والتي يتم إدخالها بواسطة بعض برامج الصور،
- إجراء بعض التحويلات على ملف، مثل:
هذه العمليات لا تُفقد البيانات، وهي قابلة للعكس فقط فيما يتعلق ببيانات الصورة المحفوظة. ولا تتم إعادة ترميز البيانات مع تكرار عملية التكميم الفاقد للبيانات ( فقدان الجيل ).
تاريخ
تم إطلاق تطبيق JPEG الخاص بمجموعة JPEG المستقلة (IJG) للجمهور لأول مرة في 7 أكتوبر 1991، وشهد تطورًا ملحوظًا منذ ذلك الحين. وقد تولى توم لين الجزء الأكبر من عملية التطوير في البداية . وكان تطبيق IJG مفتوح المصدر أحد أهم حزم البرامج مفتوحة المصدر، وكان له دور محوري في نجاح معيار JPEG. وقد قامت العديد من الشركات بدمجه في منتجات متنوعة، مثل برامج تحرير الصور ومتصفحات الويب. [ 9 ]
في الإصدار الخامس، الذي صدر في 24 سبتمبر 1994، أُعيدت كتابة قاعدة الشفرة البرمجية بالكامل. وقد تضمن هذا الإصدار برنامجي rdjpgcom و wrjpgcom لمعالجة التعليقات النصية المضمنة. أما الإصدار السادس، الصادر في 2 أغسطس 1995، فقد دعم تقنية JPEG التدريجية، ولأول مرة، أُضيف إليه برنامج jpegtran . وفي الإصدار 6b، أُضيفت إلى هذا البرنامج ميزات لتدوير الصور وقلبها، بالإضافة إلى تقليل تدرج الرمادي.
libjpeg-turbo والنسخ التابعة لها
ابتداءً من الإصدار 6b من مكتبة libjpeg بتاريخ 27 مارس 1998، أنشأ مياساكا ماسارو فرعًا باسم libjpeg/SIMD ، والذي تضمن تحسينات SIMD لمعالجات x86. وقد تلقى هذا الفرع مساهمات كبيرة من مشروعي TigerVNC وVirtualGL في عام 2009. وعلى هذا الأساس، تم إنشاء مشروع libjpeg-turbo في عام 2010. [ 10 ]
في 4 مارس 2014، نُشرت النسخة الأولى من برنامج MozJPEG المُعدّل لتحسين حجم الملفات. في هذه النسخة، أعاد جوش آس من قسم الأبحاث في موزيلا صياغة سكربت بيرل jpegcrush من لورين ميريت، المطور الرئيسي لبرنامج x264 ، ودمجه في قاعدة بيانات libjpeg-turbo. [ 11 ]
في 10 يوليو 2014، أصدرت موزيلا الإصدار 2.0، الذي أضاف بشكل أساسي تقنية التكميم الشبكي، وأصبح الآن قادرًا على تقليل حجم صور JPEG الأساسية أيضًا. تبرعت شركة فيسبوك بـ60 ألف دولار لتطوير الإصدار التالي، [ 12 ] وقامت شركة CloudFlare بتعيين مطور لتحسين MozJPEG. [ 13 ]
في عام 2019، أصبحت مكتبة libjpeg-turbo هي التنفيذ المرجعي المعتمد من قبل المنظمة الدولية للمعايير (ISO) والاتحاد الدولي للاتصالات (ITU) لتنسيق JPEG. [ 14 ]
في أبريل 2024، قدمت جوجل Jpegli ، وهي مكتبة ترميز JPEG جديدة توفر إمكانيات محسنة وتحسينًا بنسبة 35٪ في نسبة الضغط عند إعدادات الضغط عالية الجودة، بينما تكون سرعة الترميز مماثلة لـ MozJPEG. [ 15 ]
تغيير في قيادة مجموعة IJG
بعد مرور 11 عامًا وتغيير في القيادة، أصدر معهد IJG بقيادة غيدو فولبيدينغ إصدارات جديدة من مكتبة libjpeg (من 7 إلى 9)، والتي أدى كل منها إلى فقدان التوافق مع الإصدارات السابقة من حيث واجهة التطبيق الثنائية (ABI). [ 16 ] لم تُنفذ التغييرات التي كانت مُنتظرة بعد سلسلة الإصدارات 6x. [ 17 ] في الإصدار 7، أُضيف دعم الترميز الحسابي ، والذي رُفض سابقًا بسبب وضع براءات الاختراع ، بالإضافة إلى ميزة القص في jpegtran -crop. [ 17 ]
كان الهدف الرئيسي من الإصدارين 8 و9 هو إدخال امتدادات تنسيق مثيرة للجدل [ 18 ] وغير متوافقة. ويُنظر إليها على نطاق واسع على أنها غير فعالة وأقل كفاءة من الحلول القياسية الحالية. [ 19 ] وقد رُفض اعتمادها كمعيار بعد تقديمها إلى الاتحاد الدولي للاتصالات (ITU-T) . وينتقد المنظم الأصلي توم لين وآخرون هذه التغييرات باعتبارها خروجًا عن أهداف المجموعة المشتركة الدولية (IJG). [ 18 ]
الإصدارات
| إصدار | مطلق سراحه | ميزات جديدة | |
|---|---|---|---|
| متوافق مع معيار ITU T.81 JPEG | |||
| غير مدعوم: 1 | 1991 |
| |
| غير مدعوم: 2 | 1991 |
| |
| غير مدعوم: 3 | 1992 | تحسينات في جودة الصورة والجودة الداخلية | |
| غير مدعوم: 4 | 1992 | تحسينات داخلية وتحسينات في السرعة | |
| غير مدعوم: 4أ | 1993-02-18 | ||
| غير مدعوم: 5 | 24-09-1994 | تحسينات داخلية وواجهة برمجة تطبيقات منقحة | |
| غير مدعوم: 5أ | 1994-12-07 | ||
| غير مدعوم: 5ب | 15-03-1995 | ||
| غير مدعوم: 6 | 1995-08-02 |
| |
| غير مدعوم: 6أ | 1996-02-07 | ||
| مدعوم: 6ب | 27-03-1998 |
(يستخدم بواسطة libjpeg-turbo و MozJPEG و Jpegli ) | |
| غير مدعوم: 7 | 2009-06-27 | ||
| ملحقات غير متوافقة مملوكة | |||
| غير مدعوم: 8 | 10-01-2010 | ||
| غير مدعوم: 8a | 2010-02-28 | RGBA | |
| غير مدعوم: 8ب | 2010-05-16 | إصلاحات لمشاكل الذاكرة ومشاكل البناء | |
| غير مدعوم: 8c | 2011-01-16 | خيار تحديد حجم كتلة DCT (SmartScale) | |
| غير مدعوم: 8d | 15 يناير 2012 | RGB JPEG (بدون تحويل الألوان إلى YCbCr) | |
| غير مدعوم: 9 | 13-01-2013 | ||
| غير مدعوم: 9أ | 19-01-2014 | ||
| غير مدعوم: 9ب | 2016-01-17 | تحسينات في الحوسبة | |
| غير مدعوم: 9c | 2018-01-14 | jpegtran -wipe | |
| غير مدعوم: 9 أيام | 2020-01-12 |
| |
| غير مدعوم: 9e | 2022-01-16 | دعم ARM و ARM64 (MSVC) | |
| أحدث إصدار: 9f | 2024-01-14 |
| |
شوكات
ومن بين النسخ المتفرعة المعروفة libjpeg-turbo، التي تعمل على تحسين سرعة التنفيذ، و MozJPEG، التي تعمل على تحسين أحجام الملفات الأصغر.
توجد أيضًا مكتبة تحمل اسمًا مشابهًا من المنظمة الدولية للمعايير (ISO) ، والتي تهدف إلى أن تكون تطبيقًا كاملاً لمعايير JPEG و JPEG XT و JPEG LS . [ 25 ]
libjpeg-turbo
libjpeg-turbo هي نسخة معدلة من libjpeg تستخدم تعليمات SIMD لتسريع ترميز وفك ترميز JPEG الأساسي. تستخدم العديد من المشاريع الآن libjpeg-turbo بدلاً من libjpeg، بما في ذلك توزيعات لينكس الشائعة ( فيدورا ، ديبيان ، ماجيا ، أوبن سوزي ، ...)، ومتصفحي موزيلا وكروم . [ 27 ] [ 28 ] [ 29 ] إلى جانب الأداء، اختارت بعض المشاريع استخدام libjpeg-turbo لأنها تسمح لها بالحفاظ على توافق واجهة التطبيق الثنائية (ABI) مع الإصدار الأقدم libjpeg v6b. [ 30 ] أما الإصدارات libjpeg v7 وv8 وv9 فقد أدت إلى فقدان توافق واجهة التطبيق الثنائية مع الإصدارات السابقة. [ 16 ]
تُطبّق مكتبة libjpeg-turbo ترميز الحساب المتوافق مع المعايير وميزات الاقتصاص بدون فقدان للبيانات الموجودة في libjpeg v7. كما يمكن تهيئتها لتكون متوافقة مع واجهة التطبيق الثنائية (ABI) الخاصة بـ libjpeg v7 أو v8، ولكنها لا تُطبّق تحجيم DCT ولا تقنية SmartScale الخاصة، والتي تعتمد على تحجيم DCT. [ 31 ] اختارت libjpeg-turbo عدم دعم SmartScale، لأنها ليست معيارًا من معايير ITU-T ولأن أبحاثهم الخاصة وجدت أنها (وتحجيم DCT) غير فعّالة. [ 21 ] وبناءً على ذلك، ولأن الميزة الجديدة الرئيسية الوحيدة في libjpeg v9 خاصة بتنسيق SmartScale، فقد اختار مشروع libjpeg-turbo التخلي عن محاكاة libjpeg v9.
منذ عام 2019، أصبح libjpeg-turbo أحد تطبيقي JPEG المرجعيين، وهو متاح كمعيار ISO/IEC 10918-7 ومعيار ITU-T T.873. [ 14 ] أما التطبيق المرجعي الآخر فهو ISO libjpeg الذي يتضمن أيضًا دعمًا لـ JPEG XT و JPEG LS.
MozJPEG
MozJPEG هو نسخة معدلة من libjpeg-turbo، طوّرها جوش آس وآخرون من قسم أبحاث موزيلا. يهدف إلى تسريع تحميل صفحات الويب من خلال تقليل حجم الملفات (بنسبة 10% تقريبًا) وبالتالي تقليل وقت الإرسال، وذلك عبر تحسين كفاءة الترميز مع الحفاظ على جودة الصورة. ولتحقيق ذلك، يستخدم MozJPEG قدرة معالجة أكبر للترميز (الترميز غير المتماثل) مع الحفاظ على التوافق التام مع معيار JPEG، ودون الحاجة إلى أي تغييرات في جانب فك الترميز.
تشمل التقنيات التي يستخدمها MozJPEG لتحقيق ضغط عالٍ تحسين أشجار هوفمان ، واستخدام الترميز التدريجي لتقسيم طيف معاملات تحويل جيب التمام المنفصل (DCT) إلى عمليات مسح منفصلة على النحو الأمثل، واستخدام التكميم الشبكي . بالإضافة إلى ذلك، تم ضبط الإعدادات المسبقة بدقة عالية لتقليل أحجام الملفات.
إلى جانب libjpeg-turbo، يعتمد MozJPEG أيضًا على jpegcrush، وهو برنامج نصي مكتوب بلغة Perl من تأليف لورين ميريت. [ 11 ] [ 33 ]
Jpegli
في أبريل 2024، قدمت جوجل مكتبة Jpegli ، وهي مكتبة ترميز JPEG جديدة توفر إمكانيات محسنة وتحسينًا بنسبة 35٪ في نسبة الضغط عند إعدادات الضغط عالية الجودة، بينما تكون سرعة الترميز مماثلة لـ MozJPEG. [ 34 ]
ISO libjpeg
تحتفظ مجموعة خبراء التصوير المشتركة التابعة للمنظمة الدولية للمعايير (ISO/IEC) بتطبيق برمجي مرجعي لتنسيق JPEG الأساسي (ISO/IEC 10918-1 و18477-1) وامتدادات JPEG XT (ISO/IEC 18477 الأجزاء 2 و6-9)، بالإضافة إلى تنسيق JPEG-LS غير المضغوط (ISO/IEC 14495). [ 35 ] كما يتضمن بعض تحسينات MozJPEG. وعلى الرغم من تسميتها أيضًا libjpeg، إلا أنها لا ترتبط بشفرة المصدر التي توفرها مجموعة JPEG المستقلة (IJG) ولا تدعم الامتدادات الاحتكارية التي قدمتها IJG منذ عام 2007.
انظر أيضاً
مراجع
- ↑ غوهلر، لارس (29 أبريل 2020). "إصدار جديد من مكتبة libjpeg (الإصدار 9d) لمجموعة Independent JPEG Group متوفر الآن" . مرجع JPEG . مجموعة Independent JPEG Group . تاريخ الاسترجاع: 25 يناير 2021 .
- ↑ فريزنهاهن، بوب (6 يونيو 2020). "ردًا على: [ Libjpeg-devel-6x ] 4 أخطاء تجاوز سعة عدد صحيح في libjpeg-9c" . libjpeg-devel-6x (قائمة بريدية) . تم الاطلاع عليه بتاريخ 25 يناير 2021. كان
القلق الوحيد هو أن غيدو فولبيدينغ من غير المرجح أن يكون مشتركًا في هذه القائمة، وأن برنامج IJG JPEG يُطوَّر أساسًا بواسطة شخص واحد.
- ↑ "مجموعة JPEG المستقلة" . تم الاطلاع عليه بتاريخ 25 يناير 2026 .
- ↑ JPEG JFIF
- ↑ وصف تفضيلات وخيارات Jpegcrop
- ↑ ألعاب سينمائية >> كان أكبر إخفاق لنظام براءات الاختراع لدينا... مؤرشف بتاريخ 1 سبتمبر 2012 في أرشيف الإنترنت
- ↑ 680385 - لا يعرض متصفح فايرفوكس صور JPEG المشفرة حسابيًا
- ↑ ميزات jpegtran الجديدة
- ↑ الصفحة الرئيسية لصور JPEG
- ↑ "libjpeg-turbo" . libjpeg-turbo .
- 1 2 أندريه كرامر (heise.de-Newsticker)، 14 يناير 2013: Mozilla-Encoderverbessert JPEG-Kompression
- ↑ سيباستيان جرونر، 16 يوليو 2014: MozJPEG 2.0: Facebook يدعم أداة تشفير JPEG من Mozilla
- ↑ "CloudFlare möchte zu Mozillas JPEG-Encoder beitragen" . 30 يوليو 2014.
- 1 2 "ISO/IEC 10918-7:2019 تكنولوجيا المعلومات - الضغط الرقمي وتشفير الصور الثابتة ذات التدرج اللوني المستمر - الجزء 7: البرامج المرجعية" . ISO ."T.873 (05/19): تكنولوجيا المعلومات - الضغط الرقمي وتشفير الصور الثابتة ذات التدرج اللوني المستمر: برنامج مرجعي " . www.itu.int
- ↑ "تقديم Jpegli: مكتبة ترميز JPEG جديدة" . مدونة جوجل مفتوحة المصدر. 3 أبريل 2024. مؤرشف من الأصل في 3 أبريل 2024. تم الاطلاع عليه في 4 أبريل 2024 .
- 1 2 "libjpeg: مراجعة تغييرات واجهة برمجة التطبيقات/واجهة التطبيق الثنائية" . تم الاسترجاع في 28-10-2017 .
- 1 2 مانس رولغارد (Hardwarebug.org)، 4 أغسطس 2009: عودة IJG. مؤرشف في 16 يوليو 2014 على Wayback Machine.
- لين ، توم (16 يناير 2013). "مستخدمو مكتبة Libjpeg-turbo، وjpeg-9، وتوافق واجهة برمجة التطبيقات/واجهة التطبيق الثنائية، والدور المستقبلي لهذا المشروع" . fedoraproject.org . مؤرشف من الأصل في 3 يناير 2014.
- ↑ رولغارد، مانس (1 فبراير 2010). "IJG تُحاول مجدداً، وتُخفق" . هاردويرباغ . مؤرشف من الأصل في 10 ديسمبر 2024.
- ↑ "ترميز الصور الثابتة باستخدام ترميز حسابي بديل وفقًا لمعيار ITU-T T.81 (JPEG-1)" (ملف PDF). سبتمبر 2009.
- 1 2 "libjpeg-turbo | حول / دراسة حول فائدة قياس DCT و SmartScale" . libjpeg-turbo.org .
- ↑ اقتراح الاتحاد الدولي للاتصالات تقييس الصور JPEG-Plus R3
- ↑ تطور JPEG
- ↑ ترميز JPEG 9 بدون فقدان الجودة
- ↑ "Libjpeg" . GitHub . 6 أكتوبر 2021.
- ↑ "الإصدار 3.2.0" . 30 يونيو 2026. تم الاطلاع عليه في 1 يوليو 2026 .
- ↑ البرامج التي تستخدم أو توفر libjpeg-turbo . 9 فبراير 2012.
- ↑ العدد 48789 – كروميوم – استخدم libjpeg-turbo بدلاً من libjpeg . 14 أبريل 2011.
- ↑ خطأ رقم 698519 – تحديث إلى libjpeg-turbo 1.2 . 28 فبراير 2012
- ↑ libjpeg لـ F14 . 9 فبراير 2012.
- ↑ ملف README الخاص بـ libjpeg-turbo، مؤرشف بتاريخ 14 ديسمبر 2018 على موقع Wayback Machine
- ↑ "الإصدارات · mozilla/mozjpeg" . github.com . تم الاطلاع عليه بتاريخ 14-08-2022 .
- ^ أندرياس دوناث (golem.de)، 6 مارس 2014: سوف تقوم موزيلا بتحسين كومبريميرين ملفات JPEG
- ↑ "تقديم Jpegli: مكتبة ترميز JPEG جديدة" . مدونة جوجل مفتوحة المصدر. 3 أبريل 2024. مؤرشف من الأصل في 3 أبريل 2024. تم الاطلاع عليه في 4 أبريل 2024 .
- ↑ "Jpeg - Jpeg Xt" .
روابط خارجية
- الأسئلة الشائعة حول صور JPEG
- نيمان، روبرت؛ آس، جوش (6 أغسطس 2014). "استخدام MozJPEG لإنشاء صور JPEG فعّالة" . هاكس . موزيلا.
- JPEG
- مكتبات الرسومات
- مكتبات لغة البرمجة C
- برنامج مجاني مكتوب بلغة C
