جعفر آخوندعلی
جعفر آخوندعلی
خواندن ۲ دقیقه·۴ سال پیش

بهینه سازی سریع عکس ها در ترمینال گنو/لینوکس

سلام، با یه پست شیرازی دیگه در خدمت شما هستم

معمولا عکس ها بیشترین حجم توی وبسایت هارو میگیرن. با پر حجم بودن عکس ها هم لود سایت میاد پایین، هم برای سئو بد میشه و هم بار روی سرور بیشتر میشه.

من قبلا از سرویس هایی مثل tinypng برای بهینه سازی عکس استفاده میکردم، ولی عیبش اینه که هم محدودیت داره، هم اینکه باید دونه دونه فایل هارو آپلود و دانلود کنیم.

برای حل این مشکل، حدود ۱۰ تا ابزار مختلف رو روی فرمت های png و jpg تست کردم و بهترین ابزار برای هر فرمت رو پیدا کردم. یه مشکلی این ابزار ها داشتن این بود که نمیشد روی هر تمام فایل های یه مسیر اجراشون کنم و باید دستی انجام میدادم، پس اومدم با استفاده از دستور parallel، یه اسکریپت کوچیک bash نوشتم که روی تمام عکس ها با استفاده از تمام هسته های CPU، کاره فشرده سازی رو انجام بده.

برای مثال، عکس زیر با ابعاد 1920x1080 قبل از فشرده سازی 863kb حجم داشت:

قبل از عمل - اندازه 863kb
قبل از عمل - اندازه 863kb

و بعد از فشرده سازی با انتخاب ۷۰٪ کیفیت (که هنوز هم محسوس نیست) در 0.06 ثانیه، فقط 304kb حجم گرفت:

بعد از عمل - انداره 304kb
بعد از عمل - انداره 304kb

کار کردن با این برنامه هم شیرازی آماده شده با چندتا آپشن کوچولو:

Usage: tapnesh [-q|--quality <arg>] [-R|--(no-)recursive] [-v|--(no-)verbose] [-k|--(no-)keep] [-h|--help] <path>
<path>: Path to directory for optimization
-q, --quality: Sets quality for optimized images, can be a value from 1 to 100. (100 means lossless optimization) (default: '80')
-R, --recursive, --no-recursive: Do recursive (off by default)
-v, --verbose, --no-verbose: Be verbose (off by default)
-k, --keep, --no-keep: Keep old files (off by default)
-h, --help: Prints help

کد برنامه به همراه روش نصب و مثال های بیشتر رو گذاشتم توی گیتهاب:

https://github.com/JafarAkhondali/Tapnesh

اگر به کارتون اومد یک ستاره به گیتهاب این حقیر عنایت بفرمایید

لینوکسگنوbashoptimize
یه برنامه نویس دیگه، که استاد از این شاخه به اون شاخه پریدن توی زمینه های مختلفه https://akhondali.ir
شاید از این پست‌ها خوشتان بیاید