ابزارهای تصویر

کم کردن حجم عکس: چه چیزی برای ۱۰۰، ۲۰۰ و ۵۰۰ کیلوبایت واقعاً جواب می‌دهد

پایین آوردن کیفیت به‌تنهایی حجم عکس‌های گوشی ما را تقریباً کم نکرد و با کیفیت بالا حتی آن‌ها را بزرگ‌تر کرد. اندازه گرفتیم کدام ترکیب ابعاد و کیفیت در سقف حجم رایج سامانه‌ها جا می‌شود.

نوشته‌ی انتشار: ۱۰ دقیقه مطالعه

فرم‌های آپلود معمولاً سقف سخت‌گیرانه‌ای دارند: عکس پرسنلی حداکثر ۲۰۰ کیلوبایت، مدرک ثبت‌نام کمتر از ۱ مگابایت، پیوست ایمیلی که صندوق گیرنده را پر نکند. بیشتر ما اول نوار کیفیت را پایین می‌کشیم و تعجب می‌کنیم که حجم فایل تقریباً تغییری نمی‌کند. اندازه گرفتیم چرا. سه عکس معمولی گوشی و یک اسکرین‌شات را در Chrome 141 با ترکیب‌های زیادی از ابعاد، کیفیت و فرمت دوباره ذخیره کردیم و هر نتیجه را با نسخه‌ی اصلی مقایسه کردیم. ابزار فشرده‌سازی تصویر ما از همین تابع مرورگر استفاده می‌کند و در Chrome دقیقاً همین فایل‌ها را می‌سازد. در مرورگرهای دیگر عددها ممکن است کمی فرق کنند، چون هر مرورگر رمزگذار (encoder) خودش را دارد.

عکس‌های آزمایش

این سه عکس از یک جشن خانوادگی‌اند و یک کیک روی میز، یک دیوار تزئین‌شده و یک سینی خوراکی را نشان می‌دهند. هر کدام ۲٬۵۷۶ × ۱٬۹۳۲ پیکسل، یعنی حدود ۵ مگاپیکسل دارد (عکس کیک ایستاده است) و حجمشان ۵۰۶، ۷۳۸ و ۶۲۲ کیلوبایت است. بررسی فایل‌ها نشان داد که از قبل به‌صورت JPG با کیفیت حدود ۷۵ ذخیره شده بودند. از این عکس‌ها فقط برای اندازه‌گیری استفاده کردیم و آن‌ها را منتشر نمی‌کنیم.

برای مقایسه‌ی کیفیت از SSIM (شباهت ساختاری) استفاده کردیم؛ معیاری رایج که ساختار دو تصویر را مقایسه می‌کند: ۱ یعنی کاملاً یکسان، و از حدود ۰٫۹۷ به بالا تفاوت‌ها در اندازه‌ی معمولی به‌سختی دیده می‌شوند. در همه‌ی جدول‌ها هر کیلوبایت ۱٬۰۰۰ بایت است.

پایین آوردن کیفیت به‌تنهایی تقریباً فایده ندارد

اول عکس‌ها را در اندازه‌ی کامل دوباره ذخیره کردیم و فقط کیفیت را تغییر دادیم:

Chrome 141، فرمت JPG، سه عکس در اندازه‌ی اصلی. بازه‌ها کمترین و بیشترین مقدار سه عکس را نشان می‌دهند.
کیفیتحجم نسبت به نسخه‌ی اصلیSSIM
۹۵۱۴۸ تا ۱۵۸ درصد۰٫۹۹۹
۹۰۱۲۱ تا ۱۲۴ درصد۰٫۹۹۷
۸۰۱۰۳ تا ۱۰۴ درصد۰٫۹۹۴ تا ۰٫۹۹۵
۷۵۹۷ تا ۹۸ درصد۰٫۹۹۹
۷۰۹۴ تا ۹۶ درصد۰٫۹۹۴ تا ۰٫۹۹۵
۶۰۸۵ تا ۸۶ درصد۰٫۹۷۸ تا ۰٫۹۸۴
۵۰۷۵ تا ۷۶ درصد۰٫۹۴۸ تا ۰٫۹۶۵

با کیفیت ۹۰ یا ۹۵ فایل‌ها تا ۵۸ درصد بزرگ‌تر شدند، بی‌آنکه بهتر شوند: جزئیاتی که در ذخیره‌ی اول حذف شده دیگر برنمی‌گردد. با کیفیت ۷۵، یعنی همان کیفیت فایل‌های اصلی، فایل‌های تازه تقریباً یکسان بودند (SSIM ۰٫۹۹۹) و فقط ۲ تا ۳ درصد کم‌حجم‌تر. صرفه‌جویی واقعی از کیفیت ۵۰ تا ۶۰ شروع شد و حتی با کیفیت ۶۰ هم حجم عکس‌ها هنوز ۴۳۰ تا ۶۳۴ کیلوبایت بود. اگر عکسی یک بار فشرده شده باشد، نوار کیفیت ابزار درستی برای کم کردن حجم آن نیست.

اول تعداد پیکسل‌ها را کم کنید

تعداد پیکسل‌ها خیلی بیشتر از سطح کیفیت حجم فایل را تعیین می‌کند. عکس‌ها را طوری کوچک کردیم که ضلع بلندترشان طول مشخصی داشته باشد و آن‌ها را با کیفیت ۷۵ ذخیره کردیم:

Chrome 141، فرمت JPG با کیفیت ۷۵. عکس دیوار بیشترین جزئیات ریز را دارد و همیشه از همه حجیم‌تر است.
ضلع بلندترمگاپیکسلکیک / دیوار / سینینسبت به نسخه‌ی اصلی
۲٬۵۷۶ پیکسل (اندازه‌ی اصلی)۵٫۰۴۹۲ / ۷۲۰ / ۶۱۲ کیلوبایت۹۷ تا ۹۸ درصد
۱٬۹۲۰ پیکسل۲٫۸۳۰۵ / ۴۱۱ / ۳۶۹ کیلوبایت۵۶ تا ۶۰ درصد
۱٬۶۰۰ پیکسل۱٫۹۲۲۶ / ۲۹۵ / ۲۷۴ کیلوبایت۴۰ تا ۴۵ درصد
۱٬۲۸۰ پیکسل۱٫۲۱۵۷ / ۱۹۵ / ۱۹۰ کیلوبایت۲۶ تا ۳۱ درصد
۱٬۰۲۴ پیکسل۰٫۸۱۱۰ / ۱۳۲ / ۱۳۵ کیلوبایت۱۸ تا ۲۲ درصد
۸۰۰ پیکسل۰٫۵۷۴ / ۸۶ / ۹۱ کیلوبایت۱۲ تا ۱۵ درصد

با نصف کردن ضلع بلندتر فقط یک‌چهارم پیکسل‌ها باقی می‌ماند و حجم فایل‌ها به ۲۶ تا ۳۱ درصد حجم اصلی رسید. برای بسیاری از کاربردها همین هم کافی است: ۱٬۲۸۰ پیکسل برای ایمیل یا تصویری در ستون متن بس است و ۸۰۰ پیکسل برای عکس پروفایل یا پیش‌نمایش. اگر عکسی باید روی صفحه‌نمایش‌های با تراکم پیکسل بالا در تمام عرض یک سایت واضح دیده شود، راهنمای JPG، PNG، WebP یا AVIF؟ حدود دو برابر عرض نمایش را پیشنهاد می‌کند.

تنظیمات برای سقف‌های حجم رایج

بر اساس این اندازه‌گیری‌ها تنظیماتی را انتخاب کردیم که هر سه عکس با آن‌ها زیر سقف‌های رایج ماندند:

Chrome 141. عکس‌هایی با جزئیات ریز زیاد جای بیشتری لازم دارند و عکس‌هایی با سطوح یکدست بزرگ جای کمتری.
سقف حجمضلع بلندترکیفیت JPGکیک / دیوار / سینی
۵۰۰ کیلوبایت۱٬۹۲۰ پیکسل۸۰۳۵۵ / ۴۷۵ / ۴۲۵ کیلوبایت
۳۰۰ کیلوبایت۱٬۶۰۰ پیکسل۷۵۲۲۶ / ۲۹۵ / ۲۷۴ کیلوبایت
۲۰۰ کیلوبایت۱٬۲۸۰ پیکسل۷۵۱۵۷ / ۱۹۵ / ۱۹۰ کیلوبایت
۱۵۰ کیلوبایت۱٬۰۲۴ پیکسل۷۵۱۱۰ / ۱۳۲ / ۱۳۵ کیلوبایت
۱۰۰ کیلوبایت۸۰۰ پیکسل۷۵۷۴ / ۸۶ / ۹۱ کیلوبایت

حالا ابزار ما می‌تواند این جست‌وجو را خودش انجام دهد: سقف حجم را در خانه‌ی تازه‌ی حجم هدف بنویسید. ابزار سطح‌های کیفیت بین ۶۰ تا ۹۰ را امتحان می‌کند و بالاترین سطحی را که جا شود نگه می‌دارد. اگر حتی ۶۰ هم زیاد باشد، ابعاد را مرحله‌به‌مرحله کوچک می‌کند و دوباره امتحان می‌کند. برای عکس‌های ما این تنظیمات را انتخاب کرد:

ابزار فشرده‌سازی تصویر ما در Chrome 141.
عکسهدف ۲۰۰ کیلوبایتهدف ۱۰۰ کیلوبایت
کیک (ایستاده)۱٬۲۵۲ × ۱٬۶۷۰ پیکسل، کیفیت ۶۴: ۱۹۴ کیلوبایت۸۲۹ × ۱٬۱۰۶ پیکسل، کیفیت ۶۲: ۹۷ کیلوبایت
دیوار۱٬۳۷۵ × ۱٬۰۳۱ پیکسل، کیفیت ۶۸: ۱۹۳ کیلوبایت۹۸۰ × ۷۳۵ پیکسل، کیفیت ۶۴: ۹۹٫۵ کیلوبایت
سینی۱٬۴۹۵ × ۱٬۱۲۱ پیکسل، کیفیت ۶۴: ۱۹۹ کیلوبایت۹۹۳ × ۷۴۵ پیکسل، کیفیت ۶۰: ۹۹ کیلوبایت

ابزار پیکسل‌های بیشتری نگه می‌دارد و کیفیت پایین‌تری از جدول ما به کار می‌برد. هر دو روش معقول‌اند، چون همان‌طور که بخش بعد نشان می‌دهد، تفاوت کیفیت ۶۰ و ۸۰ به‌سختی دیده می‌شود.

کیفیت را تا کجا می‌شود پایین آورد؟

برای اینکه ببینیم فشرده‌سازی از کجا به چشم می‌آید، نسخه‌ی ۱٬۲۸۰ پیکسلی عکس کیک را با کیفیت ۸۰، ۶۰، ۴۰ و ۲۵ ذخیره کردیم و همان بخش‌ها را چهار برابر بزرگ کردیم. کیفیت ۸۰ و ۶۰ عملاً یکسان بودند، حتی در تزئینات براق و پرده‌ی نرم پس‌زمینه. با کیفیت ۴۰ مربع‌های کم‌رنگی در سطوح نرم و یکدست پیدا شد. با کیفیت ۲۵ این مربع‌ها کاملاً آشکار بودند و رنگ‌هایی که نرم به هم می‌رسیدند به لکه‌های تخت تبدیل شدند. این مربع‌ها نشانه‌ی همیشگی JPG است که تصویر را در بلوک‌های ۸ × ۸ پیکسلی فشرده می‌کند.

بنابراین برای عکس، کیفیت ۶۰ تا ۸۰ محدوده‌ی امنی است. اگر فایلی با کیفیت ۶۰ هنوز حجیم است، به‌جای پایین‌تر آوردن کیفیت، ابعاد را بیشتر کوچک کنید: تصویری کمی کوچک‌تر کمتر از مربع‌ها به چشم می‌آید. حجم هدف در ابزار ما هم همین‌طور کار می‌کند.

WebP: سبک‌تر، اما همه‌جا پذیرفته نمی‌شود

عکس‌ها را به‌صورت WebP هم ذخیره کردیم و حجم‌ها را در کیفیت اندازه‌گیری‌شده‌ی یکسان، یعنی SSIM برابر ۰٫۹۷، مقایسه کردیم:

Chrome 141. حجم‌ها میان سطح‌های کیفیت اندازه‌گیری‌شده برای SSIM برابر ۰٫۹۷ درون‌یابی شده‌اند.
عکس۱٬۶۰۰ پیکسل: از JPG به WebP۱٬۲۸۰ پیکسل: از JPG به WebP
کیک۲۱۵ به ۱۹۷ کیلوبایت (۸ درصد کمتر)۱۶۱ به ۱۴۳ کیلوبایت (۱۱ درصد کمتر)
دیوار۳۹۶ به ۲۹۲ کیلوبایت (۲۶ درصد کمتر)۲۵۹ به ۱۸۲ کیلوبایت (۳۰ درصد کمتر)
سینی۲۸۸ به ۲۵۳ کیلوبایت (۱۲ درصد کمتر)۱۹۶ به ۱۶۷ کیلوبایت (۱۵ درصد کمتر)

WebP بین ۸ تا ۳۰ درصد صرفه‌جویی کرد؛ بیشترینش در عکس پرجزئیات دیوار. در راهنمای JPG، PNG، WebP یا AVIF؟ که با عکس‌های دیگر و رمزگذار دیگری اندازه گرفته شد، میانگین ۲۶ درصد بود؛ میزان صرفه‌جویی به خود تصویر بستگی دارد. برای سایت خودتان WebP انتخاب خوبی است. اما برای فرم‌ها، سامانه‌های اداری و ایمیل، JPG امن‌تر است، چون بعضی فرم‌های آپلود فقط JPG یا PNG می‌پذیرند.

اسکرین‌شات راه دیگری لازم دارد

اسکرین‌شات نوشته‌های تیز و سطوح یکدست بزرگ دارد؛ درست برعکس عکس. یک اسکرین‌شات ۱٬۲۸۰ × ۱٬۲۰۰ پیکسلی از یکی از راهنماهایمان را آزمودیم که به‌صورت PNG با حجم ۲۸۸ کیلوبایت ذخیره شده بود:

Chrome 141. با کیفیت ۱۰۰، Chrome فایل WebP را بدون هیچ افتی ذخیره کرد: همه‌ی پیکسل‌ها با نسخه‌ی اصلی یکی بودند.
ذخیره به‌صورتحجمSSIM
PNG، ذخیره‌ی دوباره با مرورگر۴۲۱ کیلوبایت۱ (یکسان)
JPG، کیفیت ۹۰۲۳۷ کیلوبایت۰٫۹۹۴
JPG، کیفیت ۸۰۱۸۳ کیلوبایت۰٫۹۸۶
WebP، کیفیت ۱۰۰۲۱۷ کیلوبایت۱ (یکسان)
WebP، کیفیت ۹۰۱۳۹ کیلوبایت۰٫۹۹۸
WebP، کیفیت ۸۰۱۰۶ کیلوبایت۰٫۹۹۶

ذخیره‌ی دوباره‌ی PNG در مرورگر حجم آن را ۴۶ درصد بیشتر کرد؛ فایل‌های PNG برنامه‌های مختلف با فشردگی بسیار متفاوتی ذخیره می‌شوند. ابزار ما این را تشخیص می‌دهد و فایل اصلی را نگه می‌دارد. WebP با کیفیت ۸۰ برنده‌ی آشکار بود: ۶۳ درصد کم‌حجم‌تر از PNG و با این حال نزدیک‌تر به نسخه‌ی اصلی از JPG با کیفیت ۹۰. با بزرگ‌نمایی سه‌برابر، نوشته‌ها در همه‌ی نسخه‌ها به‌راحتی خوانده می‌شدند. اگر فرمی فقط JPG می‌پذیرد، برای اسکرین‌شات کیفیت ۹۰ را انتخاب کنید.

در این میان چه چیزی از دست می‌رود؟

وقتی مرورگر تصویری را دوباره ذخیره می‌کند، از روی پیکسل‌ها فایل تازه‌ای می‌سازد. در آزمایش ما Chrome پروفایل رنگ را نگه داشت، اما این‌ها را حذف کرد:

  • اطلاعات EXIF، مثل مدل دوربین، تاریخ و اگر وجود داشته باشد، موقعیت GPS. این پیش از انتشار عمومی عکس‌ها مفید است.
  • نقشه‌ی بهره‌ی HDR (gain map). هر سه عکس از نوع Ultra HDR بودند: کنار تصویر معمولی، یک تصویر دوم کوچک (۲ تا ۴ درصد حجم فایل) داشتند که به صفحه‌نمایش‌های HDR اجازه می‌دهد بخش‌های روشن را درخشان‌تر نشان دهند. پس از فشرده‌سازی، این عکس‌ها روی آن صفحه‌ها مثل عکس‌های معمولی دیده می‌شوند.

هر چیزی که جزئی از خود تصویر است حذف نمی‌شود. تاریخی که روی عکس چاپ شده، مثل یکی از عکس‌های ما، همچنان دیده می‌شود. اگر می‌خواهید چیزی پنهان بماند، پیش از فشرده‌سازی آن را برش بزنید.

گام‌به‌گام: عکسی برای سقف حجم یک سامانه

  1. فایل اصلی را نگه دارید و روی یک نسخه‌ی کپی کار کنید. هر ذخیره‌ی بااتلاف کمی جزئیات بیشتری حذف می‌کند.
  2. آنچه را لازم ندارید با ابزار برش تصویر حذف کنید. هر پیکسلی که حذف شود، حجم را کم می‌کند.
  3. ابزار فشرده‌سازی تصویر را باز کنید و برای فرم‌ها و ایمیل JPG و برای سایت خودتان WebP را انتخاب کنید.
  4. سقف حجم را به‌عنوان حجم هدف وارد کنید؛ مثلاً ۲۰۰ برای ۲۰۰ کیلوبایت. اگر تنظیمات ثابت را ترجیح می‌دهید، از جدول بالا استفاده کنید یا اول ابعاد را با ابزار تغییر اندازه‌ی تصویر تعیین کنید.
  5. نتیجه را با بزرگ‌نمایی ۱۰۰ درصد بررسی کنید، به‌خصوص چهره‌ها و نوشته‌ها را.
  6. برای اسکرین‌شات WebP را انتخاب کنید، یا اگر فقط JPG پذیرفته می‌شود، JPG با کیفیت ۹۰ را.

فشرده‌سازی تصویرتصاویر JPG، PNG و WebP را در مرورگر فشرده کنید: کیفیت را انتخاب کنید، ابعاد را کوچک کنید و فایل سبک‌تر بگیرید؛ بدون آپلود.باز کردن ابزار

ابزارهای این راهنما

پرسش‌های متداول

چطور حجم عکس را به ۱۰۰ کیلوبایت برسانم؟

در ابزار فشرده‌سازی تصویر ما عدد ۱۰۰ را به‌عنوان حجم هدف وارد کنید. بدون این گزینه، ضلع بلندتر را به حدود ۸۰۰ پیکسل برسانید و عکس را با کیفیت ۷۵ به‌صورت JPG ذخیره کنید. سه عکس ۵ مگاپیکسلی آزمایش ما بعد از این کار ۷۴ تا ۹۱ کیلوبایت شدند.

چرا حجم عکس بعد از فشرده‌سازی بیشتر شد؟

چون از قبل فشرده شده بود. ذخیره‌ی دوباره‌ی JPG با کیفیتی بالاتر از قبل فقط داده اضافه می‌کند: عکس‌های گوشی ما که با کیفیت حدود ۷۵ ذخیره شده بودند، با کیفیت ۹۰ بین ۲۱ تا ۲۴ درصد بزرگ‌تر شدند. اگر نتیجه با همان ابعاد و فرمت بزرگ‌تر شود، ابزار ما فایل اصلی را نگه می‌دارد.

هر کیلوبایت ۱٬۰۰۰ بایت است یا ۱٬۰۲۴ بایت؟

طبق استاندارد بین‌المللی، هر کیلوبایت (kB) ۱٬۰۰۰ بایت است و ۱٬۰۲۴ بایت یک کیبی‌بایت (KiB). ویندوز و بعضی فرم‌ها هنوز با ۱٬۰۲۴ حساب می‌کنند. فایلی که با حساب ۱٬۰۰۰ بایت زیر سقف باشد، با حساب ۱٬۰۲۴ هم زیر سقف است؛ به همین دلیل حجم هدف در ابزار ما با ۱٬۰۰۰ بایت حساب می‌شود.

آیا فشرده‌سازی موقعیت مکانی را از عکس‌هایم حذف می‌کند؟

در آزمایش ما Chrome هنگام ذخیره همه‌ی اطلاعات EXIF، از جمله مختصات GPS در صورت وجود، را حذف کرد. آنچه روی خود تصویر چاپ شده، مثل تاریخ، باقی می‌ماند.

برای فایل کم‌حجم WebP بهتر است یا JPG؟

در آزمایش ما WebP با کیفیت یکسان ۸ تا ۳۰ درصد کم‌حجم‌تر بود. از آن برای سایت خودتان استفاده کنید؛ برای فرم‌ها، ایمیل و چاپ JPG امن‌تر است، چون همه‌ی گیرندگان WebP را نمی‌پذیرند.

آیا عکس‌هایم آپلود می‌شوند؟

خیر. ابزارهای تصویر ما در مرورگر شما اجرا می‌شوند. عکس‌ها روی دستگاه خودتان پردازش می‌شوند و هرگز به سرور ما فرستاده نمی‌شوند.

منابع و مطالعه‌ی بیشتر

  1. MDN Web Docs: HTMLCanvasElement.toBlob() – the browser function our image tools use to save images (developer.mozilla.org)
  2. Android Developers: Ultra HDR Image Format v1.1 (gain map stored next to the normal JPG image) (developer.android.com)
  3. Wang, Bovik, Sheikh, Simoncelli (2004): Image quality assessment: from error visibility to structural similarity (SSIM). IEEE Transactions on Image Processing 13(4) (doi.org)
همه‌ی راهنماها