انجمن عمومی گسترش فناوری آگو
ساخت تصاویر بندانگشتی (thumbnail) در PHP - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: ساخت تصاویر بندانگشتی (thumbnail) در PHP (/showthread.php?tid=2289)



ساخت تصاویر بندانگشتی (thumbnail) در PHP - agotd - 01-25-2014 03:13 PM

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

مزیت ساخت تصاویر بند انگشتی اینه که محتویات سایت به هم نمیریزه و هم سرعت لود شدن سایت کاهش پیدا میکنه.

برای انجام این کار از توابع GD در PHP استفاده میکنیم.برای ساخت تصاویر بند انگشتی ۵ مرحله زیر رو دنبال میکنیم :

۱ – بارگزاری (Load) عکس مورد نظر در یک متغیر

۲ – مشخص کردن عرض و طول تصویر

۳ – ساخت یک عکس خالی با اندازه دلخواه

۴ – کپی کردن عکس اصلی در تصویر ساخته شده (شماره ۳)

۵ – نمایش تصویر thumbnail

خب بریم ببینیم چطور میشه که ایطور میشه Big Grin

کد php:
$sourceImage 'img/moon.jpg';

$thumbWidth 200;

$thumbHeight 200

در بالا ابتدا عکس اصلی رو مشخص کردیم سپس سایز تصویر thumbnail رو مشخص کردیم.

حالا کدهای زیر رو اضافه میکنیم :

کد php:
$original imagecreatefromjpeg($sourceImage);

$dims getimagesize($sourceImage); 

در خط اول کد بالا ، عکس اصلی رو با استفاده از دستور imagecreatefromjpeg داخل یک متغیر کپی کردیم.در خط بعد هم اندازه تصویر اصلی رو داخل متغیر $dims ریختیم.

یادآوری :

تابع getimagesize سایز تصویر رو به صورت یک آرایه برمیگردونه.

در مرحله بعد با استفاده از تابع imagecreatetruecolor یک تصویر خالی ایجاد میکنیم

کد php:
$thumb imagecreatetruecolor($thumbWidth $thumbHeight); 

در این مرحله عکس اصلی رو در عکس ساخته شده در مرحله قبل کپی میکینیم :

کد php:
imagecopyresampled$thumb$original0000,
 
$thumbWidth$thumbHeight$dims[0], $dims[1] ); 

تابع imagecopyresampled عکس رو تغییر سایز میده و در متغیر $thumb (عکس خالی ایجاد شده در مرحله قبل) کپی میکنه.

در این تابع پارامتر اول تصویر خالی ایجاد شده است.

پارامتر دوم تصویر اصلی رو مشخص میکنه.

پارامتر های سوم و چهارم و پنجم و ششم مختصات تصویر اصلی رو مشخص میکنه.با دادن مختصات میتونیم مشخص کنیم کجای تصویر اصلی در $thumb قرار بگیره.این مختصات از بالای سمت چپ تصویر اصلی حساب میشن.اگر بخوایم کل تصویر اصلی در $thumb قرار بگیره این ۴ پارامتر رو ۰ قرار میدیم.

چهار پارامتر انتهایی این تابع هم سایز تصویر بندانگشتی و سایز تصویر اصلی رو میگیره.

در مرحله آخر هم با استفاده از تابع header این تصویر رو نمایش میدیم :

کد php:
header('Content-type: image/jpeg');
imagejpeg($thumb); 

ابتدا با دستور header فرمت تصویر رو مشخص کردیم.(انواع فرمتهای تصویر و نحوه استفاده در تابع header رو قبلا بحث کردیم)

سپس با تابع imagejpeg تصویر رو به خروجی ارسال کردیم.