هفته‌ی پیش پوشه‌ای رسید با 312 عکس محصول، از 800 × 800 تا 5472 × 3648، ترکیبی از JPG و PNG و چند فایل HEIC. بازارچه JPG با ابعاد 1600 × 1600 و زیر 2MB می‌خواست. نسخه‌ی دیگر همین کار انتقال وبلاگ است: دویست تصویر PNG که باید به WebP با حداکثر عرض 1600 تبدیل شوند. دو کار متفاوت به نظر می‌رسند، اما پایپ‌لاین هر دو یکی است.

چرا گذرهای جداگانه به کیفیت آسیب می‌زنند

راه بدیهی این است که سه ابزار پشت سر هم به کار بروند: تغییر اندازه و دانلود، تبدیل و دانلود، فشرده‌سازی و دانلود. هر ابزار دسته‌ای کار می‌کند، اما در پایان فایل را دوباره کدگذاری هم می‌کند. JPG فرمتی با اتلاف است؛ هر بار کدگذاری مقداری اطلاعات را دور می‌ریزد و پس از سه دور، در بزرگ‌نمایی روی لبه‌ها بلوک‌بندی و هاله‌ی آشکاری دیده می‌شود.

راه درست این است که فقط یک بار و در پایان کدگذاری شود. تصویر به بیت‌مپ رمزگشایی می‌شود، اندازه‌اش تغییر می‌کند، برش می‌خورد و فرمتش در حافظه عوض می‌شود و فقط گام آخر فایلی با فرمت و کیفیت هدف می‌نویسد. پردازش دسته‌ای تصاویر همین‌طور ساخته شده است: شش گام با ترتیب ثابت و بدون هیچ مرحله‌ی دارای اتلاف در میانشان.

مقایسه‌ی کیفیت: سه گذر با ابزارهای جدا در برابر یک گذر در پایپ‌لاین
همان تصویر پس از سه بار کدگذاری مجدد (چپ) و پس از یک بار کدگذاری (راست)

سناریوی اول: 300 تصویر محصول برای بازارچه

هدف: 1600 × 1600، JPG، زیر 2MB و نام فروشگاه پایین سمت راست. گام‌به‌گام:

  1. اندازه: پر کردن 1600 × 1600. تصاویر عریض و بلند اول فقط آن‌قدر بزرگ یا کوچک می‌شوند که این کادر را بپوشانند.
  2. برش به نسبت: 1:1. هرچه از مربع بیرون بزند از مرکز بریده می‌شود؛ عکس‌هایی که سوژه‌شان وسط است آسیب نمی‌بینند.
  3. واترمارک: روشن، متن نام فروشگاه، پایین سمت راست، اندازه 4 درصد، شفافیت 50 درصد.
  4. خروجی: JPG با کیفیت 85 و نام فایل‌ها با گزینه‌ی «تغییر نام به name-001» و کد محصول یا دسته به‌عنوان پیشوند.

روی یک لپ‌تاپ معمولی 312 تصویر در سه تا چهار دقیقه تمام می‌شود و بین 200 تا 600KB درمی‌آید، یعنی بسیار پایین‌تر از سقف 2MB. فایل‌های HEIC اصلی مستقیم خوانده می‌شوند و نیازی به دور تبدیل جداگانه نیست. ZIP با نام‌های مرتب و پشت‌سرهم بیرون می‌آید و بدون تغییر نام آماده‌ی آپلود است.

سوژه‌ی بعضی عکس‌ها خیلی از مرکز دور است و برش مرکزی بخشی از آن را می‌برد. این‌ها را کنار بگذارید، با برش تصویر دستی کادر کنید و جداگانه از پایپ‌لاین بگذرانید. در بیشتر دسته‌ها این تعداد از یک‌دهم کمتر است.

سناریوی دوم: گالری وبلاگ که به WebP منتقل می‌شود

هدف: همه‌ی تصاویر WebP با عرض حداکثر 1600 و اسکرین‌شات‌هایی که تیز بمانند. ساده‌تر از سناریوی اول است:

  1. اندازه: عرض 1600 با خاموش‌بودن «اجازه‌ی بزرگ‌کردن». هر تصویری که باریک‌تر باشد دست‌نخورده می‌ماند.
  2. خروجی: WebP با کیفیت 80.
  3. نام فایل‌ها: نام اصلی را نگه دارید. آن‌وقت در نوشته‌ها فقط پسوند عوض می‌شود، از .png به .webp.

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

پس از آن، دو تا از نتیجه‌ها را در مبدل تصویر بیندازید و رفتارشان را در مرورگر قدیمی‌تر وارسی کنید؛ اطمینانی ارزان.

پر کردن، جا شدن یا ضلع بلندتر؟

حالت تغییر اندازه همان تنظیمی است که بیشتر اشتباه گرفته می‌شود. هر یک از سه حالت رایج برای یک موقعیت ساخته شده است:

  • ضلع بلندتر: فقط می‌خواهید تصویر زیادی بزرگ نباشد و نسبت اهمیتی ندارد. تصاویر وبلاگ و آلبوم‌های اشتراکی.
  • جا شدن در W × H: کل تصویر باید بدون برش در یک کادر جا شود، پس ممکن است یک ضلع کوتاه‌تر بماند. تصاویر بندانگشتی و اسلایدها.
  • پر کردن W × H: کادر باید کاملاً پوشیده شود و اضافه بریده شود. تصاویر بازارچه، آواتار و کارت‌هایی با نسبت ثابت، معمولاً همراه «برش به نسبت».

یک قاعده‌ی سریع: اگر پلتفرم می‌گوید «حداکثر N پیکسل»، ضلع بلندتر یا جا شدن را بزنید. اگر می‌گوید «دقیقاً W × H»، پر کردن را.

دو بررسی پیش از اجرا

اول، پیش‌نمایش زنده را ببینید. پایپ‌لاین اولین تصویر را با همه‌ی تنظیم‌های فعلی نمایش می‌دهد: جای واترمارک، اینکه برش سوژه را می‌بُرد یا نه، هر تغییر رنگی؛ همه با یک نگاه پیداست. تأیید کنید و بعد «پردازش همه» را بزنید. نگذارید بعد از 300 فایل بفهمید نام فروشگاه روی خود محصول افتاده است.

دوم، فایل‌های اصلی را نگه دارید. پایپ‌لاین هرگز فایل مبدأ را تغییر نمی‌دهد، اما خروجی‌های کدگذاری‌شده‌ی مجدد EXIF و داده‌ی عکاسی ندارند، پس پیش از دانلود ZIP مطمئن شوید اصل‌ها جایی نگهداری شده‌اند. برای عکس‌هایی که باید داده‌ی موقعیتشان پاک شود این یک مزیت است؛ متادیتای EXIF چیست و چرا باید حذف شود را ببینید.

تغییر اندازه و تبدیل دسته‌ای را می‌شود در یک جمله خلاصه کرد: یک بار تنظیم کنید، کل دسته را اجرا کنید و در میانه هرگز به دیسک دست نزنید. بقیه‌اش انتخاب بین سه حالت تغییر اندازه و دو فرمت خروجی است.