Crop รูป เพือสร้างรูป Thumbnail

การ ตัดรูปเพื่อทำรูป thumbnail แบบที่รักษาอัตราส่วน รูปภาพ thumbnail ให้คงที่ และทำการย่อ หรือคำนวณตำแหน่งรูปที่จะตัด กลางรูป thumbnail

// สร้าง thumbnail ตัดส่วนที่เกิน เพื่อให้ได้ขนาดที่กำหนด
function cropImage($source, $target, $thumbwidth, $thumbheight)
{
    $size = getImageSize($source);
    $w = $size[0];
    $h = $size[1];

    switch ($size[mime]) {
        case 'image/gif':
            $o_im = imageCreateFromGIF($source);
            break;
        case 'image/jpeg':
            $o_im = imageCreateFromJPEG($source);
            break;
        case 'image/png':
            $o_im = imageCreateFromPNG($source);
            break;
        default:
            $error = $size[mime].' ไม่รองรับ.';
            break;
    };

    if ($error == '') {
        $wm = $w / $thumbwidth;
        $hm = $h / $thumbheight;
        $h_height = $thumbheight / 2;
        $w_height = $thumbwidth / 2;

        $t_im = ImageCreateTrueColor($thumbwidth, $thumbheight);

        if ($w > $h) {
            $adjusted_width = $w / $hm;
            $half_width = $adjusted_width / 2;
            $int_width = $half_width - $w_height;
            ImageCopyResampled($t_im, $o_im, -$int_width, 0, 0, 0, $adjusted_width, $thumbheight, $w, $h);
        } elseif (( $w < $h ) || ( $w == $h )) {
            $adjusted_height = $h / $wm;
            $half_height = $adjusted_height / 2;
            $int_height = $half_height - $h_height;
            ImageCopyResampled($t_im, $o_im, 0, -$int_height, 0, 0, $thumbwidth, $adjusted_height, $w, $h);
        } else {
            ImageCopyResampled($t_im, $o_im, 0, 0, 0, 0, $thumbwidth, $thumbheight, $w, $h);
        };

        if (!@ImageJPEG($t_im, $target)) {
            $error = "ไม่สามารถสร้างรูปได้, ตรวจสอบไดเร็คทอรี่ให้ถูกต้อง";
        };

        imageDestroy($o_im);
        imageDestroy($t_im);
    };

    return $error;
}

$source = ไฟล์ต้นทาง เช่นไฟล์ที่อัปโหลดมา
$target = ไฟล์ปลายทาง ชื่อไฟล์รวม path เป็น jpg เท่านั้น
$thumbwidth = ความกว้างของรูปที่ต้องการ
$thumbheight = ความสูงของรูปที่ต้องการ

ตัวอย่าง :

$error = cropImage( $_FILES[iconupload][tmp_name] , 'thumb.jpg' , $article_icon_width , $article_icon_width );

ผู้เขียน goragod โพสต์เมื่อ 20 ก.ค. 2551 เปิดดู 9,259 ป้ายกำกับ PHP
^