سازوکار فشردهسازی فایل چگونه است؟
فشردهسازی فایل مبنای اصلی عملکرد وب است. بدون فشردهسازی فایل، انتقال فایلها نیاز به پهنای باند و زمان زیادی دارد. فایلهای ZIP یا تصاویر JPEG نمونههای سودمندی از فشردهسازی فایلها هستند. بنابراین شاید از خود بپرسید: فشردهسازی فایل چگونه انجام میشود؟ در این مقاله به مبانی فشردهسازی اشاره شده است.
فشردهسازی چیست؟
به بیان ساده، فشردهسازی فایل (فشردهسازی داده) به عمل کاهش اندازهی فایل و درعینحال حفظ اصالت دادهها گفته میشود؛ با این کار، فضای اشغالی فایل در دستگاه حافظه کاهش پیدا میکند و علاوه بر این انتقال فایل روی اینترنت و دستگاههای دیگر آسانتر میشود.
فشردهسازی عملی بینهایت نیست؛ بااینکه فشردهسازی فایل و تبدیل آن به ZIP اندازهی فایل را کاهش میدهد، اما با فشردهسازی مجدد نمیتوان فایل را کوچکتر کرد. بهطورکلی فشردهسازی فایل به دو دسته تقسیم میشود: با اتلاف و بدون اتلاف.
فشردهسازی با اتلاف
در فشردهسازی با اتلاف با حذف بیتهای غیرضروری اطلاعات، اندازهی فایل کاهش پیدا میکند. این روش برای فشردهسازی تصاویر، ویدئو و فرمتهای صوتی که نیازی به ارائهی بینقص رسانهی مبدأ ندارند، کاربرد دارد. برای بسیاری از فرمتهای متداول رسانه ازجمله MP3 و JPEG از این روش فشردهسازی استفاده میشود.
فایل MP3 لزوما شامل تمام اطلاعات صوتی مبدأ نیست؛ بلکه بخشی از صوتهای غیرقابل شنیدن برای انسان را حذف میکند. شما متوجه حذف آن اصوات نمیشوید بنابراین با حذف این اطلاعات، حجم فایل به شکلی بینقص کاهش مییابد. بهطور مشابه، JPEG هم بخشهای غیرضروری تصاویر را حذف میکند. برای مثال در فشردهسازی تصویر آسمان آبی به فرمت JPEG بهجای نمایش هزاران سایهروشن متفاوت، یک یا دو سایهروشن رنگ آبی انتخاب میشود.
بااینحال، هرچقدر فشردهسازی فایلها سنگینتر باشد، افت کیفیت آنها چشمگیرتر است. برای مثال آپلود فایلهای mp3 که در یوتیوب آپلود میشوند، کیفیت پایینی دارند. فشردهسازی با اتلاف، زمانی مناسب است که نیازی به بخش غیرضروری اطلاعات نداشته باشید. برای مثال در مورد فایلهای تصویری RAW، تنها زمانی به این فرمت نیاز دارید که بخواهید تصویر را روی بنری بزرگ چاپ کنید اما برای آپلود روی شبکههای اجتماعی مثل فیسبوک نیازی به این فرمت نیست.
تصویر شامل دادههایی است که هنگام نمایش در سایتهای شبکهی اجتماعی دیده نمیشود. با فشردهسازی تصویر به JPEG باکیفیت، بخشی از اطلاعات تصویر حذف میشود، اما تغییری در ظاهر آن به وجود نمیآید.
کاربرد عمومی فشردهسازی با اتلاف
اغلب رسانهها از فشردهسازی با اتلاف استفاده میکنند. برای مثال این روش برای شرکتهایی اسپاتیفای و نتفلیکس مفید است که نیاز به انتقال انبوه اطلاعات دارند. آنها با کاهش حداکثری حجم فایل و درعینحال حفظ کیفیت آن، بازدهی خود را بالا میبرند؛ اما تصور کنید اگر از این روش استفاده نشود، فایلهای ویدئویی یوتیوب چه حجم زیادی را اشغال میکنند.
درصورتیکه اطلاعات فایل ضروری باشند، فشردهسازی با اتلاف توصیه نمیشود. برای مثال استفاده از فشردهسازی با اتلاف برای فایل متنی یا صفحهی گسترده میتواند منجر به تحریف خروجی شود. در چنین شرایطی نمیتوان بدون آسیب به محصول نهایی به فشردهسازی پرداخت. هنگام ذخیرهسازی فرمت با اتلاف میتوان سطح کیفیت را تنظیم کرد. برای مثال بسیاری از ویرایشگرهای تصویر از زبانهی ۰ تا ۱۰۰ برای تنظیم کیفیت JPEG برخوردار هستند.
ذخیرهسازی باکیفیت ۹۰ یا ۸۰، اندازهی فایل را فقط اندکی کاهش میدهد و تفاوت آن با فایل اصلی قابلچشمپوشی است؛ اما ذخیرهسازی باکیفیت ضعیف یا تکرار ذخیرهسازی فایل با فرمت با اتلاف، میتواند کیفیت فایل را به شکل چشمگیری از بین ببرد.
فشردهسازی با اتلاف در تصویر زیر نشان داده شده است. تصویر سمت چپ، نسخهی اصلی است که با فرمت JPEG از Pixabay دانلود شده است. تصویر وسط نتیجهی ذخیرهسازی تصویر بهصورت JPEG با کیفیت ۵۰ درصد است و تصویر سمت راست، ذخیرهسازی با کیفیت ۱۰ درصد را نمایش میدهد.
با نگاهی سریع، میتوان تشخیص داد تصویر وسط زیاد هم بد به نظر نمیرسد. البته با بزرگنمایی میتوانید متوجه خرابیهایی در اطراف لبهی جعبهها شوید؛ اما تصویر سمت راست ظاهر بسیار بدی دارد. قبل از کراپ کردن تصاویر برای آپلود، اندازهی آنها به ترتیب ۸۷۴ کیلوبایت، ۳۱۰ کیلوبایت و ۱۰۰ کیلوبایت بود.
فشردهسازی بدون اتلاف
فشردهسازی بدون اتلاف، حجم فایل را طوری کاهش میدهد که بتوان به بازسازی فایل اصلی پرداخت. این روش در مقایسه با فشردهسازی بدون اتلاف، هیچ اطلاعاتی را حذف نمیکند. بلکه از طریق حذف افزونگی، فایل را کوچک میکند.
با یک مثال بهتر میتوان این تعریف را درک کرد. در تصویر زیر ۱۰ آجر اسباببازی را مشاهده میکنید: دو آجر آبی، پنج زرد و سه قرمز. این پشته راه سادهای برای نمایش آجرها است اما روش دیگری هم برای انجام این کار وجود دارد.
بهجای نمایش ۱۰ بلوک آجری، میتوان از هر رنگ، یک آجر را حذف کرد. سپس از اعداد برای نمایش تعداد آجر هر رنگ استفاده کرد. به این روش همان اطلاعات با اشغال فضایی کمتر منتقل میشود؛ بنابراین بهجای ده آجر دقیقا به سه آجر نیاز است.
مثال بالا، نمایش سادهای از فشردهسازی بدون اتلاف بود. در روش بدون اتلاف، با حذف افزونگی حجم یکسانی از اطلاعات بهصورت بهینه ذخیره میشود... حالا فایلی واقعی را در نظر بگیرید که رشتهی زیر در آن وجود دارد:
mmmmmuuuuuuuoooooooooooo
میتوان فشردهسازی را به این صورت انجام داد:
m5u7o12
در مثال فوق میتوان بهجای ۲۴ کاراکتر از هفت کاراکتر برای نمایش همان اطلاعات استفاده کرد و به شکل چشمگیری در حافظه صرفهجویی کرد.
کاربرد فشردهسازی بدون اتلاف
فشردهسازی بدون اتلاف در سناریوهایی اهمیت دارد که نمیخواهید هیچکدام از اطلاعات فایل اصلی حذف شوند. برای ساخت فایل ZIP از برنامهی اجرایی در ویندوز از فشردهسازی بدون اتلاف استفاده میشود. فشردهسازی فایل ZIP روش بهینهای برای ذخیرهسازی برنامهها است و با خارج شدن فایل از حالت فشرده امکان دسترسی به اطلاعات وجود خواهد داشت؛ بنابراین اگر از فرمت با اتلاف برای فشردهسازی فایلهای اجرایی استفاده کرده باشید، نسخهی غیر فشردهی آن بیاستفاده میشود.
فرمتهای متداول بدون اتلاف شامل PNG برای تصاویر، FLAC برای صوت و ZIP است. فرمتهای بدون اتلاف برای ویدئو بهندرت پیدا میشوند زیرا ویدئو فضای بسیار زیادی را اشغال میکند
هر کدام از روشهای فشردهسازی در چه شرایطی مناسب هستند؟
حالا پس از بررسی دو نوع فشردهسازی فایل، شاید این سؤال مطرح شود که چه موقع باید از آنها استفاده کرد. بهطورکلی هیچکدام از روشها بر یکدیگر برتری ندارند بلکه بسته به موقعیت و هدف باید از آنها استفاده کرد.
از فشردهسازی بدون اتلاف باید زمانی استفاده کرد که بهدنبال کپی بینقصی از اطلاعات منبع باشید و از فشردهسازی با اتلاف زمانی استفاده میشود که کپی ناقص هم نیاز را برطرف کند. حالا یک مثال دیگر را در نظر بگیرید.
فرض کنید بخواهید مجموعه CD قدیمی خود را دیجیتالی کنید بنابراین باید کل سی دی را روی کامپیوتر کپی کنید. برای تبدیل CD میتوانید از فرمت بدون اتلافی مثل FLAC استفاده کنید. بهاینترتیب کیفیت کپی اصلی روی کامپیوتر مشابه کیفیت اصلی CD است.
حالا فرض کنید بخواهید چند ترک موسیقی را روی تلفن همراه یا یک MP3 پلیر قدیمی بریزید. در اینجا نیازی به کیفیت بینقص نخواهید داشت بنابراین میتوانید فایلهای FLAC را به Mp3 تبدیل کنید. این روش تأثیر زیادی روی کیفیت فایل صوتی نخواهد داشت و درعینحال فضای کمی هم ذخیره خواهد شد. کیفیت تبدیل FLAC به MP3 زمانی خوب است که MP3 از CD اصلی تولید شده باشد.
فشردهسازی با اتلاف بیرویه منجر به کاهش کیفیت فایل میشود
روش فشردهسازی به نوع دادهای فایل هم وابسته است. ازآنجاکه تصاویر PNG از فرمت بدون اتلاف استفاده میکنند، مزایای آنها اندازهی کوچک فایل و درعینحال فضای یکپارچه است. از طرفی در صورت نمایش رنگهای بیشتر، PNG-ها فضای بیشتری را اشغال میکنند.
چالشهای فشردهسازی فایل
تبدیل فرمتهای بدون اتلاف به فرمتهای با اتلاف مشکلساز نیست. بااینحال هرگز نباید فرمت با اتلاف را به فرمت بدون اتلاف یا هر فرمت دیگری تبدیل کنید. تبدیل فرمتهای با اتلاف به فرمت بدون اتلاف بهمعنی هدر دادن فضا است؛ زیرا فرمتهای با اتلاف معمولا بخشی از دادهها را حذف میکنند و بازیابی آنها غیرممکن است.
فرض کنید یک فایل Mp3 با حجم ۳ مگابایت داشته باشید. تبدیل این فایل به فرمت FLAC، منجر به تولید فایلی ۳۰ مگابایتی میشود اما ۳۰ مگابایت دقیقا شامل اطلاعات فرمت MP3 است و عملا تغییری حاصل نشده است. تبدیل به فرمت بدون اتلاف لزوما منجر به بازیابی اطلاعات ازدسترفته نمیشود.
از طرف دیگر، تبدیل فرمت با اتلاف به فرمتهای دیگر (ذخیرهسازی پیوسته با فرمت با اتلاف) منجر به افت تدریجی کیفیت میشود؛ زیرا با هر بار اعمال فشردهسازی با اتلاف، بخشی از جزئیات از بین میرود و افت کیفیت بهتدریج تا خراب کامل فایل خود را نشان میدهد.
در این مقاله به عملکرد فشردهسازی با اتلاف و بدون اتلاف اشاره شد. حالا میدانید که ذخیرهسازی فایل با فرمت کوچکتر امکانپذیر است و میتوانید بهترین روش را براساس نیازهای خود انتخاب کنید. البته روش تصمیمگیری الگوریتمها در فشردهسازی با اتلاف برای حذف دادههای اضافی یا بهترین روش ذخیرهسازی دادههای مضاعف در فشردهسازی بدون اتلاف بسیار پیچیدهتر از این تعاریف هستند.