چگونه برای تصاویری که آپلود میکنیم thumbnail بسازیم؟

masima

Member
سلام
من دارم یک پرتال خبری کار میکنم و میخوام برای هر کدام از تصاویر اخبار یک thumbnail به صورت خودکار ایجاد بشه و نمایش بده ؟
چطوری thumbnail بسازم؟
اگه کسی میدونه راهنماییشو دریغ نکنه. سپاسگزارم
 

Milad

Well-Known Member
از کلاس های آماده این کار استفاده کنید ... image resizer و یا .... phpclasses تعداد زیادی کلاس برای این کار داره .
 

mona.joon

Member
من از اين اسكريپت استفاده ميكنم خودم نوشتم
PHP:
ob_start();
if(!empty($_GET['id'])){
$size1 = 58; 
$sizr2 = 58;
if(!empty($_GET['s'])){
$size = ($_GET['s']);
$size3 = explode(",",$size);
$size1 = $size3['0'];
$size2 = $size3['1'];
}else{$size1 = 58; 
      $size2 = 58;}
    $id = ($_GET['id']);
    $sql = mysql_query("SELECT * FROM `images` where `id` = '$id'") or die(mysql_error());
    $rows = mysql_fetch_row($sql);
    $filename = $rows[4];
    $filetype = $rows[5];
    if(!empty($filename)){
        if($filetype == "jpg"){
        list($width_orig,$height_orig)=getimagesize("$filename");
        $width = $size1;
        $height = $size2;
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
        header('Content-Type: image/jpg');
        imagejpeg($image_p, null, 100);}
        elseif($filetype == "gif"){
        list($width_orig,$height_orig)=getimagesize("$filename");
        $width = $size1;
        $height = $size2;
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromgif($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);    
        header('Content-Type: image/gif');
        imagegif($image_p);}
        elseif($filetype == "png"){
        list($width_orig,$height_orig)=getimagesize("$filename");
        $width = $size1;
        $height = $size2;
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefrompng($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);    
        header('Content-Type: image/png');
        imagepng($image_p);}
        else{$image_p = "upload/imgads/No-Image-Available.gif";
         header('Content-Type: image/gif');
                 imagegif($image_p, null, 100);}
     }else {
         $image_p = "upload/imgads/No-Image-Available.gif";
         header('Content-Type: image/gif');
                 imagegif($image_p, null, 100);}
}
ob_flush();
طرز كارش هم سادست 2 تا پارامتر داره يكي id عكسي كه آدرسش توي ديتابيس ثبت شده كه اجباريه
يكي هم سايز درخواستي براي نمايش. در حالت پيش فرض خروجي عكس ها بصورت 58*58 پيكسل نمايش داده ميشن
 

masima

Member
مرسی ولی این کدها یعنی چی؟
ob_start();
ob_flush();
من اجرا کردم ولی چیزی نشون نداد!

 

masima

Member
خوب یه سری توضیح نه چندان با اهمیت رو فراموش کردید!!!

این فایل php که در واقع یک عکس هست باید در پوشه ای بنام gd (اگر وجود ندارد باید ایجاد شود) ذخیره بشه و سپس توسط یک فایل دیگر به عنوان سورس (src) در تگ img فراخوانی بشه.

باز هم سپاسگزارم
 

mona.joon

Member
خوب یه سری توضیح نه چندان با اهمیت رو فراموش کردید!!!

این فایل php که در واقع یک عکس هست باید در پوشه ای بنام gd (اگر وجود ندارد باید ایجاد شود) ذخیره بشه و سپس توسط یک فایل دیگر به عنوان سورس (src) در تگ img فراخوانی بشه.

باز هم سپاسگزارم
احتياجي به ايجاد پوشه نيست. اين فايل هم عكس نيست .
اين صفحه رو با هر نامي دوست داشتين ذخيره كنيد . هر جا لازم داشتين عكسي بصورت thumb نمايش بديد اينكار و انجام بدين
PHP:
<img src="page.php?id=1&size=58,58 " />
پارامتر اول اجباري هست ولي پارامتر دوم اختياري
ساختار ديتابيس هم شامل آيدي غير تكراري آدرس عكس آپلود شده و پسوند عكس هست . توي كد ها مشخصه ميتونيد تغييرش بديد به دلخواه .
 

masima

Member
خوب دوست عزیز شما دقیقا همون کاری رو انجام دادید که من گفتم.
<img src="page.php?id=1&size=58,58 " />
از تگ img در یک صفحه دیگر آدرس سورس این صفحه رو دادید! این معنی اش چیه؟ !!!
در مورد ایجاد پوشه gd : معمولا این جور فایل ها رو (حتما ! ) باید داخل این پوشه بگذاریم و نسخه php هم باید فایل gd.dll رو داشته باشه تا بتونه از گرافیک پشتیبانی کنه.
به هر حال مرسی مشکلم حل شد.
 

جدیدترین ارسال ها

بالا