- دوشنبه 27 مهر 1405 ساعت 19:00
- 3.1.9
- کامل شده
- منقضی شده
Image Manipulation Class ابزارهای تغییر اندازه، برش، چرخش و افزودن واترمارک به تصویر را فراهم میکند. این کلاس میتواند از Driverهایی مانند GD، ImageMagick یا NetPBM استفاده کند. انتخاب Driver به افزونهها و برنامههای نصبشده روی سرور وابسته است.
ساختار و API اصلی
برای هر عملیات، مسیر تصویر ورودی و خروجی و پارامترهای مربوط را تنظیم کنید. resize() ابعاد را تغییر میدهد، crop() بخش انتخابی تصویر را جدا میکند، rotate() چرخش انجام میدهد و watermark() متن یا تصویر واترمارک را اضافه میکند. پس از عملیات، clear() تنظیمات قبلی را پاک میکند.
نمونه استفاده
$config = array(
'image_library' => 'gd2',
'source_image' => FCPATH . 'uploads/source.jpg',
'new_image' => FCPATH . 'uploads/thumb.jpg',
'maintain_ratio' => TRUE,
'width' => 800,
'height' => 600
);
$this->load->library('image_lib', $config);
if (!$this->image_lib->resize()) { log_message('error', $this->image_lib->display_errors()); }
$this->image_lib->clear();نکته مهم
ابعاد و حجم تصویر ورودی را محدود کنید. پردازش تصویرهای بسیار بزرگ میتواند حافظه PHP را مصرف کند. فایل خروجی را با نام امن ذخیره کنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
عملیات اصلی تصویر
| متد یا مفهوم | کاربرد |
|---|---|
resize() | تغییر ابعاد تصویر. |
crop() | برش بخشی از تصویر. |
rotate() | چرخاندن تصویر. |
watermark() | افزودن متن یا تصویر واترمارک. |
initialize($config) | اعمال تنظیمات عملیات. |
clear() | پاک کردن تنظیمات عملیات قبلی. |
display_errors() | دریافت پیام خطای پردازش. |
نحوه استفاده و عیبیابی
در یک Controller ابتدا Library را با Loader بارگذاری کنید، سپس تنظیمات محیطی را به آن بدهید و عملیات را اجرا کنید. نتیجه را از مسیر مشخص دریافت کنید و در صورت شکست، پیام خطا را در Log ثبت کنید. اگر Library به Driver خارجی وابسته است، وجود افزونه PHP یا برنامه موردنیاز را روی سرور بررسی کنید.
در محیط توسعه، مسیر موفق و مسیر خطا را جداگانه آزمایش کنید. ورودی خالی، مقدار نامعتبر، فایل بزرگ، Timeout سرویس خارجی و نبود مجوز نوشتن از سناریوهایی هستند که باید بررسی شوند. منابعی مانند اتصال شبکه و فایلهای موقت را پس از پایان عملیات آزاد کنید.
در بازبینی کد، ترتیب و نتیجه متدهای resize()، crop()، rotate()، watermark() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.