สร้างรูปภาพใหม่จากรูปภาพเดิมพร้อมปรับขนาด
เป็นการสร้างรูปภาพใหม่จากรูปภาพเดืมโดยใช้ GD Library โดยให้ผลลัพท์เป็นรูปภาพ JPG ที่ปรับขนาดแล้ว โดยมีการรักษาอัตราส่วนภาพให้คงเดิมทำให้รูปภาพไม่บิดเบี้ยว แต่หากรูปภาพมีขนาดเล็กกว่าที่ต้องการอยู่แล้วจะเป็นการสำเนารูปภาพไปยังปลายทางโดยอัตโนมัติ เหมาะสำหรับการใช้สร้างรูป thumbnail หรือรูปขนาดเล็กสำหรับแสดง รวมไปถึงการจำกัดขนาดของรูปภาพที่จัดเก็บไม่ให้มีขนาดใหญ่เกินไป เป็นต้น
$source = ชื่อไฟล์รวม path ของรูปภาพต้นทาง เช่น ที่ได้มาจากการอัปโหลด
$target = path ที่เก็บไฟล์ที่สร้างใหม่$name = ชื่อของรูปภาพใหม่
$width = ความกว้างของรูปภาพใหม่ที่ต้องการ
รูปภาพที่ถูกสร้างใหม่จะมีขนาด กว้าง*ยาว ไม่เกิน $width
ถ้ามีการปรับขนาดรูปภาพใหม่จะเป็น JPG เท่านั้น
รองรับไฟล์ภาพ jpg,gif และ png
ค่าคืนกลับ ชื่อ ความกว้าง และความสูง ของรูปภาพใหม่ (ชื่อจะถูกเปลี่ยนนามสกุลเป็น JPG โดยอัตโนมัติ หากมีการปรับขนาด)
ไม่สำเร็จคืนค่า false
ตัวอย่าง :
function resizeImage($source, $target, $name, $width) {
// Exif
$imageinfo = getImageSize($source);
// ปรับขนาดรูปถ้า $source มีขนาดใหญ่กว่าค่า $width
if ($imageinfo[0] > $width || $imageinfo[1] > $width) {
//คำนวณขนาดใหม่
if ($imageinfo[0] <= $imageinfo[1]) //รูปสูงกว่ากว้าง
{
$h = $width;
$w = round($h * $imageinfo[0] / $imageinfo[1]);
} else {
$w = $width;
$h = round($w * $imageinfo[1] / $imageinfo[0]);
}
switch ($imageinfo[mime]) {
case 'image/gif':
$o_im = imageCreateFromGIF($source);
break;
case 'image/jpg':
case 'image/jpeg':
case 'image/pjpeg':
$o_im = imageCreateFromJPEG($source);
break;
case 'image/png':
case 'image/x-png':
$o_im = imageCreateFromPNG($source);
break;
}
// สร้าง รูป jpg จากรูปที่ส่งเข้ามา
$o_wd = @imagesx($o_im);
$o_ht = @imagesy($o_im);
// สร้าง image ใหม่ ขนาดที่กำหนดมา
$t_im = @ImageCreateTrueColor($w, $h);
// วาดลงบน image ใหม่
@ImageCopyResampled($t_im, $o_im, 0, 0, 0, 0, $w + 1, $h + 1, $o_wd, $o_ht);
// jpg เท่านั้น
$newname = substr($name, 0, strrpos($name, '.')).'.jpg';
if (!@ImageJPEG($t_im, $target.$newname)) {
$ret = false;
} else {
$ret[name] = $newname;
$ret[width] = $w;
$ret[height] = $h;
}
@imageDestroy($o_im);
@imageDestroy($t_im);
return $ret;
} elseif (@copy($source, $target.$name)) {
$ret[name] = $name;
$ret[width] = $imageinfo[0];
$ret[height] = $imageinfo[1];
return $ret;
}
return false;
}
$source = ชื่อไฟล์รวม path ของรูปภาพต้นทาง เช่น ที่ได้มาจากการอัปโหลด
$target = path ที่เก็บไฟล์ที่สร้างใหม่$name = ชื่อของรูปภาพใหม่
$width = ความกว้างของรูปภาพใหม่ที่ต้องการ
รูปภาพที่ถูกสร้างใหม่จะมีขนาด กว้าง*ยาว ไม่เกิน $width
ถ้ามีการปรับขนาดรูปภาพใหม่จะเป็น JPG เท่านั้น
รองรับไฟล์ภาพ jpg,gif และ png
ค่าคืนกลับ ชื่อ ความกว้าง และความสูง ของรูปภาพใหม่ (ชื่อจะถูกเปลี่ยนนามสกุลเป็น JPG โดยอัตโนมัติ หากมีการปรับขนาด)
ไม่สำเร็จคืนค่า false
ตัวอย่าง :
$image = resizeImage($_FILES[iconupload][tmp_name], $album_dir, $picture, $config[album][pic_width]);
if(!$image) {
echo 'ไม่สามารถอัปโหลดรูปภาพได้';
} else {
print_r($image);
}