سلام، با یه پست شیرازی دیگه در خدمت شما هستم
معمولا عکس ها بیشترین حجم توی وبسایت هارو میگیرن. با پر حجم بودن عکس ها هم لود سایت میاد پایین، هم برای سئو بد میشه و هم بار روی سرور بیشتر میشه.
من قبلا از سرویس هایی مثل tinypng برای بهینه سازی عکس استفاده میکردم، ولی عیبش اینه که هم محدودیت داره، هم اینکه باید دونه دونه فایل هارو آپلود و دانلود کنیم.
برای حل این مشکل، حدود ۱۰ تا ابزار مختلف رو روی فرمت های png و jpg تست کردم و بهترین ابزار برای هر فرمت رو پیدا کردم. یه مشکلی این ابزار ها داشتن این بود که نمیشد روی هر تمام فایل های یه مسیر اجراشون کنم و باید دستی انجام میدادم، پس اومدم با استفاده از دستور parallel، یه اسکریپت کوچیک bash نوشتم که روی تمام عکس ها با استفاده از تمام هسته های CPU، کاره فشرده سازی رو انجام بده.
برای مثال، عکس زیر با ابعاد 1920x1080 قبل از فشرده سازی 863kb حجم داشت:
و بعد از فشرده سازی با انتخاب ۷۰٪ کیفیت (که هنوز هم محسوس نیست) در 0.06 ثانیه، فقط 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
اگر به کارتون اومد یک ستاره به گیتهاب این حقیر عنایت بفرمایید