JPEG رایج ترین نوع تصویر مورد استفاده در وب است، و دلیل خوبی هم دارد: برای چندین دهه، JPEG تقریباً همیشه گزینه مناسبی برای رمزگذاری عکس ها بوده است. مورد استفاده دقیقاً در این نام وجود دارد: JPEG مخفف "گروه مشترک متخصصان عکاسی" است، کمیته مسئول اولین صدور استاندارد در سال 1992. هر چند پسوند فایل JPEG را به صورت jpg یا .jpeg مشاهده خواهید کرد. مورد دوم در استفاده مدرن نادر است.
در حالی که فشرده سازی بدون تلفات به صورت غیر فعال داده های تصویر را به بهترین شکل ممکن فشرده می کند، فشرده سازی با اتلاف JPEG به دنبال فرصت هایی برای کارآمدتر کردن فشرده سازی با تغییرات کوچک و اغلب نامحسوس در داده های تصویر است. JPEG دادههای تصویر را به صورت بلوکهای هشت در هشت پیکسلی کدگذاری میکند و بلوکها را - نه پیکسلهای منفرد داخل آنها - را بهصورت الگوریتمی توصیف میکند.
ممکن است روی کاغذ مانند یک تمایز آکادمیک به نظر برسد: «GIF از شبکهای متشکل از پیکسلها استفاده میکند در مقابل JPEG از شبکهای متشکل از شبکههای کوچکتر پیکسل استفاده میکند». در عمل، این استفاده از بلوکها به جای پیکسلها به این معنی است که JPEG برای موارد استفاده بسیار رایجتر برای تصاویر مناسب است: نوع شیبهای ظریف و لایهای که یک عکس دنیای واقعی را تشکیل میدهند.
توصیف حتی یک گرادیان تک پیکسلی بسیار ساده با استفاده از رمزگذاری به سبک GIF بسیار پرمخاطب خواهد بود:
ردیف یک، ستونهای یک تا نه 00CC00 هستند. ردیف یک، ستون دهم #00BB00 است. ردیف یک، ستون یازده #00AA00 است. ردیف یک، ستون دوازده #009900 است. ردیف یک، ستون سیزده #008800 است. ردیف یک، ستون چهارده #007700 است. ردیف یک، ستون پانزده #006600 است. ردیف یک، ستون شانزده #005500 است.
توصیف یک گرادیان با استفاده از رمزگذاری به سبک JPEG بسیار کارآمدتر است:
بلوک یک #00CC00 است. بلوک دو یک گرادیان از #00CC00 تا #005500 است.
جایی که JPEG واقعاً میدرخشد، کمی کردن سطح جزئیات «فرکانس بالا» در یک تصویر است، اغلب بهطور نامحسوس. در نتیجه، ذخیره یک تصویر به صورت JPEG معمولاً به معنای کاهش کیفیت آن تصویر به روش هایی است که قابل اندازه گیری هستند، اما لزوماً قابل مشاهده نیستند. همانطور که یاد گرفتید ، کوانتیزه کردن پالت به سبک GIF یک عملیات نسبتا ساده است: کاهش تعداد رنگ ها در یک تصویر منجر به فایل های کوچکتر می شود، اما به روشی که می توان به راحتی با چشم انسان تشخیص داد.
از سوی دیگر، JPEG در مورد چگونگی انجام کوانتیزاسیون هوشمندانه عمل میکند: فشردهسازی با اتلاف JPEG تلاش میکند تا منبع تصویر را به روشی کمّی کند که با روشی که سیستمهای بصری روانی خودمان دنیای اطراف ما را کمیت میکنند مطابقت داشته باشد. در واقع، JPEG سعی میکند جزئیاتی را که احتمالاً در وهله اول مشاهده نمیکردیم دور بریزد، بنابراین میتواند فشردهسازی اضافی را از ما عبور دهد.
سیستم روانی-بصری انسان کارهای زیادی برای فشرده سازی تصاویری که دائماً می گیرید انجام می دهد. وقتی به باغ کوچک خود به بیرون نگاه می کنم، بلافاصله می توانم حجم عظیمی از اطلاعات را پردازش کنم: به عنوان مثال، گل های رنگارنگ منفرد. برجسته شدن من فوراً ثبت می کنم که خاک خاکستری غبارآلود است و برگ ها افتاده اند - گیاهان من به آب نیاز دارند. چیزی که من می بینم ، اما به طور کامل پردازش نمی کنم، شکل، اندازه، زاویه و سایه سبز دقیق برای هر یک از برگ های رها شده است. البته میتوانم به طور فعال به دنبال آن سطح از جزئیات بگردم، اما صرفاً اطلاعات بسیار زیادی است که منفعلانه آن را دریافت کنم، و هیچ سود واقعی نخواهد داشت. بنابراین سیستم روانی-بصری من مقدار کمی از خودش را انجام می دهد و این اطلاعات را به "برگ ها در حال افتادن هستند" تقطیر می کند.
در واقع JPEG به همین صورت عمل می کند. فشردهسازی با اتلاف JPEG سطح جزئیات یک تصویر را کاهش میدهد، به گونهای که ممکن است به هیچ وجه در سیستمهای بصری روانی طبیعی «ضایعکننده» ما ثبت نشود، و این فرصتهای بسیار بیشتری را برای صرفهجویی در پهنای باند نسبت به فشردهسازی بدون تلفات به تنهایی ارائه میکند.
به عنوان مثال، JPEG از یکی از ضعفهای اصلی بصری روانی ما استفاده میکند: چشمهای ما به تفاوت در روشنایی بیشتر حساس هستند تا تفاوت در رنگ. قبل از اعمال هرگونه فشردهسازی، JPEG از فرآیندی به نام «تحول کسینوس گسسته» برای تقسیم تصویر به فرکانسهای جداگانه - «لایهها» به شیوهای صحبت کردن استفاده میکند که نشاندهنده درخشندگی (روشنایی) و کرومینانس (رنگ)، یا «لوما» و "کروما."
لایه لوما به میزان کم فشرده شده است و فقط جزئیات کوچکی را که به احتمال زیاد برای چشم انسان قابل توجه نیستند دور می اندازد.
لایه های کروم به میزان قابل توجهی کاهش می یابد. به جای کمی کردن پالت لایههای کروم مانند GIF، JPEG میتواند فرآیندی به نام «نمونهبرداری فرعی» را انجام دهد که در آن یک لایه کروم با وضوح پایینتری ذخیره میشود. هنگامی که با کشش موثر لایههای کروما با وضوح پایین بر روی لایه لوما دوباره ترکیب میشوند، این تفاوت اغلب نامحسوس است. اگر منبع تصویر اصلی و JPEG را در کنار هم مقایسه کنیم، ممکن است تفاوتهای جزئی در رنگ قابل توجه باشد، اما فقط زمانی که دقیقاً بدانیم به دنبال چه چیزی باشیم.
با این اوصاف، JPEG کامل نیست. همانطور که JPEG در مورد فشرده سازی مخفیانه از کنار ما حیله گر است، اگر خیلی دور از آن گرفته شود، می تواند به طرز چشمگیری آشکار شود. در واقع، اگر زمان زیادی را در وب سپری کرده باشید - به ویژه در روزهای گذشته - ممکن است متوجه نتیجه فشرده سازی JPEG شده باشید:
فشرده سازی بیش از حد تهاجمی داده های تصویر به این معنی است که سطح جزئیات بیشتر از آنچه سیستم های بصری روانی ما به طور طبیعی نادیده می گیرند کاهش می یابد، بنابراین این توهم شکسته می شود. واضح است که جزئیات از دست رفته است. از آنجایی که JPEG بر حسب بلوک عمل می کند، درزهای بین آن بلوک ها می توانند شروع به نمایان شدن کنند.
JPEG پیشرو
پیشرو JPEG (PJPEG) به طور موثر روند رندر یک JPEG را تغییر می دهد. JPEGهای "پایه" با پیشرفت انتقال از بالا به پایین ارائه می شوند، در حالی که JPEG پیشرونده رندر را به مجموعه ای از "اسکن" در اندازه کامل تقسیم می کند - به همین ترتیب از بالا به پایین انجام می شود - با هر اسکن کیفیت تصویر را افزایش می دهد. کل تصویر بلافاصله ظاهر می شود، هرچند تار، و با ادامه انتقال واضح تر می شود.
این یک تفاوت کاملاً فنی بر روی کاغذ به نظر می رسد، اما یک مزیت ادراکی بزرگ وجود دارد: با ارائه یک نسخه کامل از تصویر بلافاصله به جای فضای خالی، PJPEG می تواند سریعتر از یک JPEG پایه به کاربر نهایی احساس کند . علاوه بر این، به جز کوچکترین تصاویر، رمزگذاری یک تصویر به صورت PJPEG تقریباً همیشه به معنای اندازه فایل کوچکتر در مقایسه با یک JPEG پایه است - نه خیلی، اما هر بایت کمک می کند.
با این حال، یک معاوضه کوچک وجود دارد: رمزگشایی PJPEG در سمت کلاینت پیچیدهتر است، به این معنی که فشار کمی بر مرورگر و سختافزار دستگاه در طول رندر وارد میشود. تعیین مقدار سربار رندر با شرایط دقیق دشوار است، اما بسیار جزئی است و بعید است که قابل توجه باشد، مگر در دستگاههایی که به شدت ضعیف هستند. این یک مبادله است که ارزش انجام آن را دارد و هر زمان که یک تصویر را به صورت JPEG رمزگذاری کنید، پیشروی یک رویکرد پیشفرض معقول است.
با استفاده از JPEG
ممکن است از این همه اطلاعات کمی غرق شوید. با این حال، خبرهای خوبی برای کار روزانه شما وجود دارد: مشخصات فنی تر فشرده سازی JPEG انتزاع می شود، در عوض به عنوان یک تنظیم "کیفیت" منفرد در معرض دید قرار می گیرد: یک عدد صحیح از 0 تا 100. 0 کوچکترین اندازه فایل ممکن را فراهم می کند. و همانطور که ممکن است انتظار داشته باشید، بدترین کیفیت بصری ممکن است. با پیشرفت از 0 به 100، هم کیفیت و هم حجم فایل افزایش می یابد. البته این تنظیم ذهنی است - هر ابزاری مقدار "75" را به یک شکل تفسیر نمی کند و کیفیت ادراکی همیشه بسته به محتوای تصویر متفاوت است.
برای درک نحوه عملکرد این تنظیم فشرده سازی، بیایید از یک ابزار متداول مبتنی بر وب برای بهینه سازی فایل های تصویری استفاده کنیم: Squoosh .
Squoosh - که توسط تیم کروم نگهداری می شود - مقایسه ای کنار هم بین روش های مختلف رمزگذاری و پیکربندی خروجی های تصویر، با گزینه های پیکربندی از لغزنده جهانی "کیفیت" 0 تا 100 تا توانایی تنظیم دقیق جزئیات ارائه می کند. کرومینانس در مقابل نمونهبرداری مجدد درخشندگی. هرچه عدد "کیفیت" کمتر باشد، فشرده سازی بیشتر است و فایل حاصل کوچکتر خواهد بود.
در اینجا، با تنظیم "کیفیت" روی 60، اندازه فایل تا 79٪ کاهش می یابد. فریب پیامدهای این برچسب را نخورید: تفاوت در کیفیت در بیشتر مقیاس ها برای چشم انسان نامحسوس خواهد بود، حتی در صورت انجام یک مقایسه جانبی.
برای تبدیل تصویر منبع خود به یک JPEG پیشرونده، کادر با عنوان "پردازش پیشرو" را در زیر "گزینه های پیشرفته" علامت بزنید. برخی از این گزینههای پیکربندی تقریباً به طور قطع عمیقتر از حد معمول پروژههای وب هستند، اما میتوانند نگاه دقیقتری به چیزهایی که در مورد رمزگذاری JPEG آموختهاید بر اندازه و کیفیت فایل در موارد استفاده در دنیای واقعی تأثیر بگذارند.
علیرغم اینکه ما اکنون می دانیم که JPEG داخلی چقدر پیچیده است، از نظر عملی چیز زیادی برای آن وجود ندارد. Squoosh تنها یکی از روشهای بیشماری ذخیرهسازی JPEG بهینهشده است، که همگی از روش مشابهی برای تعیین سطح فشردهسازی استفاده میکنند: یک عدد صحیح بین ۰ تا ۱۰۰.
با توجه به اینکه تمام پیچیدگی رمزگذاری JPEG به یک عدد صحیح تقطیر می شود، تعیین سطح ایده آل فشرده سازی برای تصاویر شما یک بازی ظرافت است، به خصوص زمانی که تعداد زیادی به محتوای یک تصویر بستگی دارد. مانند فکر کردن به پلک زدن یا نفس کشیدن، در نظر گرفتن تنظیمات فشرده سازی JPEG نحوه درک ما از آنها را تغییر می دهد.
اکنون که به بیرون نگاه می کنم، پس از نوشتن همه اینها، پردازش روانی-بصری من دستی تر شده است- حالا من به برگه های فردی نگاه می کنم، حتی اگر خود تصویر - به اصطلاح - تغییر نکرده باشد. این امر پیکربندی فشردهسازی JPEG را کمی دشوار میکند: شما دقیقاً میدانید که به دنبال چه نوع نقصهای بصری باشید. با فکر کردن به فشردهسازی تصویر در وهله اول، روی برگهای منفرد تمرکز میکنید—ما در ابتدا تاری جزئی و مصنوع فشرده سازی گاه به گاه را تشخیص میدهیم. هرچه هنگام تنظیم دقیق تنظیمات فشردهسازی JPEG، به دنبال مصنوعات باشید، احتمال پیدا کردن آنها بیشتر است، در حالی که کاربر احتمالاً این کار را نمیکند. حتی اگر آن کاربر دقیقاً بداند که باید به دنبال چه چیزی باشد، احتمالاً از صفحهای که فشردهسازی JPEG در ذهن خود دارد بازدید نخواهد کرد.
به همین دلیل، از غریزه بالا بردن یک تصویر بهدنبال مصنوعات اجتناب کنید - یا حتی به قسمتهایی از تصاویر ما که میدانید ابتدا مصنوعات ظاهر میشوند، خیلی دقیق نگاه کنید. برای کاربران، مصنوعات کم رنگ با جزئیات کوچکی ترکیب میشوند که سیستمهای بصری روانی آنها معمولاً آنها را پنهان میکنند. در واقع، حتی با درک ترفندهایی که JPEG سعی میکند بازی کند، در حین مرور وب متوجه همان مصنوعات نمیشوید مگر اینکه به دنبال آنها بگردید. به همین دلیل، تقریباً همیشه یک شرط مطمئن برای فشار دادن فشردهسازی JPEG کمی کمتر از آنچه فکر میکنید قابل توجه است – به خصوص زمانی که آن تصویر به دلیل استایل مستقیم یا محدودیتهای تعیینشده توسط محیط اطراف، کوچکتر از اندازه ذاتیاش نمایش داده میشود. چیدمان.