برچسب پست‌ها ’php‘

اسکریپت بهینه شده timthumb

تیر ۲۴م, ۱۳۸۹

اگر برنامه نویس PHP باشید، احتمالاً با اسکریپت timthumb برخورد کرده‌اید. این اسکریپت برای کار برش (crop) و کوچک سازی تصاویر به کار می رود و در بسیاری از وبسایت ها برای نمایش دادن تصویر بندانگشتی از یک تصویر بزرگتر استفاده می شود. همین طور با استفاده از این اسکریپت چندین اسکریپت و پلاگین دیگر، مثلاً برای وردپرس، ساخته شده است.

اگر از این اسکریپت استفاده کرده باشید لابد می دانید که نسخه اصلی این اسکریپت (لینک دانلود آخرین ویرایش که از گوگل کد گرفتم) فقط از تصاویری پشتیبانی می کند که در همان سرور/دامنه ذخیره شده باشند. به عبارت دیگر نمی توان با این اسکریپت تصاویر موجود در سایت های دیگر را کوچک کرد. چند ماه پیش من دنبال راه حلی در اینترنت گشتم تا بتوان از تصاویر موجود بر سرورهای دیگر هم استفاده کرد. به کدی برخوردم که در واقع قسمت هایی از کد اصلی timthumb را کامنت کرده بود و فکر کنم چیزهایی را هم افزوده بود. با این کد جدید می شد تصویرهایی که در سایت های دیگر آپلود شده اند را هم کوچک کرد. (لینک دانلود)

اما مشکل دیگری پیدا شد، بالا بودن نسبی حجم فایل بندانگشتی ساخته شده با اسکریپت اخیر بود. در واقع عکس بندانگشتی به طور قابل ملاحظه ای حجیم می شود. اگرچه برای اندازه های با طول و عرض کوچک (مثلاً ۱۰۰×۱۰۰ پیکسل یا کمتر) نهایتاً حجم عکس بندانگشتی ۱۵-۲۰ کیلوبایت می شد (و صرف نظر از اینکه این حجم وقتی تعداد زیادی تصویر مثلاً ۳۰-۴۰ تا در یک صفحه قرار بگیرند، بارگذاری آن صفحه را طولانی می کند)، اما، اگر بخواهی اندازه های بزرگی را برش بدهی (مثلاً نصف یا ربع اندازه عکس اصلی)، آن وقت حجم تصویر درست شده حتی از حجم تصویر اصلی هم بیشتر می شود! در این مورد حتی کم کردن کیفیت خروجی اسکریپت (با متغیر q) هم چاره ساز نیست و باز حجم فایل تولید شده توسط اسکریپت اخیر زیاد است.

مجبور شدم خودم دست به کار شوم و با ور رفتن با سورسِ کد بالا، موفق شدم تا آن را از لحاظ حجم فایل ساخته شده، بهینه کنم. در یک مورد موقع آزمایش، حجم خروجی تقریباً هفت برابر کمتر شد و تصویر هم افت کیفیت محسوسی هم نداشت. نتیجه را می توانید از این لینک دریافت کنید: دانلود فایل فشرده ی اسکریپت بهینه شده ی timthumb

برچسب: ،،،،
ارسال شده در یادداشت‌های پراکنده | نظرات (۰)