تعرف على صيغة الصور WebP


ماهي WebP
هي صيغة للصور شبيهة بصيغ jpg - png لكن الصور بصيغة WebP تمتاز عن غيرها بالحجم الصغير للصور والمحافظة على الدقة الأساسية للصورة.

تم الاعلان لأول مرة عن صيغ WebP في 30 أيلول عام 2010 من قبل شركة غوغل، وقد أعلنت شركة غوغل انه عند تحويل اي صورة من png (مثلا) الى WebP سوف ينقص حجم الصورة حوالي 45% وسيتم المحافظة على دقة الصورة كما هي.

مثال
عند تحميل الشعار الخاص بكورتابز سوف تجد أنه بالصيغة png ويبلغ حجمه تقريبا 3.89KB وعند تحويله الي الصيغة webp ( قمت بستخدام موقع online-convert ) سوف يصبح حجمه تقريبا 2.81KB فتخيل معي لو أنك تعمل على موقع يضم عدد كبير من الصور وذات قياس وحجم كبير

هل صيغة webp تدعم جميع المتصفحات:
منذ أن تم الاعلان عن صيغ webp من قبل شركة غوغل وهي تسعى ليتم دعمه من قبل جميع المتصفحات وتقوم بتحديثها وتطويرها بشكل مستمر وحتى الآن هناك حوالي 70% من المتصفحات تدعم هذه الصيغة ( تعرف على المتصفحات التي تدعم هذه الصيغة بالضغط هنا ).
ولكن من المهم جدا تذكر أن صيغة webp ليست بديلا عن الصيغ الأخرى فهي صيغة تعمل فقط من خلال المتصفحات التي تدعمها، ولهذا عليك المحافظة على الصور بصيغ png - jpg إلى جانب الصور بصيغة WebP وغيرها وذلك من أجل المتصفحات الأخرى.

تحويل الصيغ المختلفة إلى صيغة WebP :
اذا كنت من مستخدمي برنامج الفوتوشوب فهذه الإضافة سوف تسهل الأمر عليك وهي webp Photoshop plugin
كما أن هناك العديد من المواقع على الإنترنت التي تقوم بتحويل مختلف انواع الصيغ. (شاركنا في التعليقات أهم المواقع التي تستخدمها في تحويل الصيغ)

والان وبعد أن تعرفنا على هذه الصيغة وكيف يمكننا الحصول عليها لندخل في الموضوع العملي وهو

كيف يمكن أن أستخدم WebP في ملف HTML
الأمر بسيط جدا :grin: يتم التعامل مع الصور بصيغة WebP كما يتم التعامل مع أي صورة من الصيغ الأخرى من خلال الكود التالي:

<img src="img/myAwesomeWebPImage.webp" alt="WebP rules." />

لكن هناك مشكلة :thinking: فهذا الكود سوف يعمل فقط على المتصفحات التي تدعم الصيغة WebP أما المتصفحات التي لا تدعم هذه الصيغة فإن الصورة لن يتم تحميلها أبد.
ولكي نتجنب هذه المشكلة سوف نستخدم الكود التالي وذلك حتى يتم دعم صيغة WebP من قبل جميع المتصفحات والكود هو:

<picture>
  <source srcset="img/awesomeWebPImage.webp" type="image/webp">
  <source srcset="img/creakyOldJPEG.jpg" type="image/jpeg"> 
  <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
</picture>

هذا الكود سوف يعمل على جميع المتصفحات ليس فقط تلك المتصفحات التي تدعم العنصر والسبب في العنصر والذي سوف يظهر الصورة في المتصفحات التي لا تدعم WebP.
:arrow_down::arrow_down::arrow_down::arrow_down:
كما انه يوجد كود أخر لإظهار الصورة ويمتاز ببساطته وسهولته وهو:

<img src="img/awesomeWebPImage.webp" onerror="this.src = 'img/creakyOldJPEG.jpg';" alt="story-image">

كيف يمكن أن أستخدم WebP في ملف CSS
في حال أردنا إظهار صورة من خلال ملف css هنا تكمن بعض المشكلات البسيطة فنحن نعلم أنه لإظهار صورة من خلال ملف css نستخدم الخاصية التالية:

background-image: url("img/creakyOldJPEG.jpg");

ولاكن أولا يجب أن نتأكد فيما إذا كان المتصفح يدعم الصيغة WebP أم لا ويمكننا ذلك بتحميل مكتبة Modernizr وهي مكتبة توفر لك إكتشاف ميزات المتصفح وبعتبار أن WebP هي أحدى ميزات المتصفح فمن خلال هذه المكتبة سوف نعلم فيما إذا كان المتصفح يدعم WebP أم لا.

ملاحظة: بإمكانك تحميل مكتبة Modernizr كاملة أو تخصيص ما أنت بحاجة إليه بإمكانك تحميل المكتبة المخصص للتحقق من دعم المتصفح للصيغة WebP من خلال الضغط هنا

نقوم بربط مكتبة Modernizr مع ملف HTML الخاص بمشروعنا من خلال الكود التالي:

<script type="text/javascript" src="js/modernizr-custom.js"></script>

وبعد أن قمنا بربط مكتبة Modernizr مع ملف HTML سوف تلاحظ أنه تم إضافة كلاس (class) تلقائيا للوسم < html > كما هو واضح في الصور التالية:

حيث أن الكلاس webp يضاف بشكل تلقائي للمتصفحات التي تدعم الصيغة WebP في حين أن الكلاس no-webp هي للمتصفحات التي لا تدعم الصيغة WebP.
(( بإمكانك تجربة ذلك بفتح المشروع على أكثر من متصفح ))
وفي النهاية نقوم بوضع الصور بستخدام الكود التالي:

/* WebP من أجل المتصفات التي لا تدعم */
.no-webp .img-class { 
  background-image: url('/img/your_image.png'); 
} 

/* WebP من أجل المتصفات التي تدعم */
.webp .img-class { 
  background-image: url('/img/your_image.webp'); 
}
9 Likes

مقال رائع بالفعل يا نازار :heart_eyes:

بالمناسبة، يقال أن صيغة WebP هي أخت صيغة WebM :smile:
الفرق فقط أن صيغة WebP للصور، وWebM للفيديو

هذا مثال عليها:

<video width="320" height="240" controls>
  <source src="http://dl5.webmfiles.org/big-buck-bunny_trailer.webm" type="video/webm">
  Your browser does not support the video tag.
</video>

النتيجة:

مصدر الفيديو: webmfiles

5 Likes

شكرا لك استاذ @YaserAlnajjar على هذه الإضافة :smile:

4 Likes

مقال رائع إستمتعت به وبطريقة طرحك، شكراً لك نازار :star_struck:

وفعلاً موضوع الصور هام جداً في تحسين تجربة المستخدم والكثير يغفل عن الإهتمام بعمل optimization لها مما ينعكس على اداء الموقع.

4 Likes

فعلا علي طول بتعلم منك حاجة مهمه بكل بساطة :slight_smile:

3 Likes

شكرا جزيلا اخي العزيز …هل ممكن اشارك المقال حتى تعم الفائده :innocent:

3 Likes

بكل تاكيد :smile:

2 Likes

تم إضافة كود جديد لإظهار الصور

2 Likes

الله يا نزار
شرح مبسط وفعلا نحن بحاجة الى تحويل الصور بهذه الصيغة
بالنسبة لأصحاب الخبرة في backend … أعتقد يمكننا تسليم مهمة التحويل للسيرفر
بمعنى: عند رفع الصور يمكن للسيرفر تحويلها الى صيغة webP
شاركونا معلوماتكم…

3 Likes

أكيد معالجة البيانات والصور كلها تتم في السيرفر…

يوجد مكاتب عديدة متخصصة في معالجة الصور و بصفة خاصة في بايثون مثل PIL أو Python Image Library و نسختها الأكثر استعمالا Pillow حيث يمكنك بأسطر قليلة تحويل الصور الى webP

@sniperadmin

2 Likes

ممتاز … سأدخل في هذا الطريق قريبا ان شاء الله وأجرب

2 Likes