V image class 2

v image class เวอร์ชั่นแรกนั้น ถูกปล่อยออกมาในปี 2010 หรือพ.ศ.2553 นั่นเอง ซึ่งรุ่นแรกนั้นก็สามารถทำงานได้เป็นอย่างดี ทั้งในเรื่องการใช้ทรัพยากร memory ในการจัดการภาพก็น้อยมาก

เวอร์ชั่นที่ 2 นั้นก็ยังคงจุดเด่นไว้เช่นเดิม แต่เพิ่มประสิทธิภาพให้มากกว่า เช่น การใส่ watermark, การย่อ-ครอป-หมุนภาพ ที่ทำสลับกันไปมาหรือซ้ำๆได้อย่างอิสระ

v image class 2

license: MIT
ต้องการ PHP 5.3 เป็นอย่างต่ำ.

อ้างอิงค่า property/method

Name Description Example
Properties
allow_resize_larger อนุญาตให้ขยายรูปใหญ่กว่าต้นฉบับได้ (true/false) $image->allow_resize_larger = false;
jpg_quality กำหนดคุณภาพของรูป jpg (0-100) $image->jpg_quality = 100;
png_quality กำหนดคุณภาพของรูป png (0-9) $image->png_quality = 0;
master_dim กำหนดให้ยึดแนวที่ระบุเป็นหลัก (auto, width, height) $image->master_dim = 'auto';
status ตรวจสอบค่าที่ได้หลังเรียก method ใดๆเพื่อทำงาน
จะได้ค่า true, false
if ($image->status == false) {// fail.}
status_msg เรียกดูสถานะที่ได้หลังเรียก method ใดๆเพื่อทำงาน
จะได้ค่า string
echo $image->status_msg;
Methods
clear() ล้างค่าต่างๆเมื่อทำงานเสร็จ เช่น หากกรณีต้องการย่อภาพหลายๆภาพ ให้ทำการล้างค่านี้ก่อนทำการเรียกย่อภาพลำดับต่อไป $image->clear();
crop($width = '', $height = '', $start_x = '0', $start_y = '0', $fill = 'transparent') ครอปภาพตามขนาดที่กำหนด
$width ความกว้างที่จะทำการครอป
$height ความสูง
$start_x ตำแหน่งที่จะเริ่มต้นในแกน x (ตัวเลขหรือ 'center')
$start_y ตำแหน่งที่จะเริ่มต้นในแกน y (ตัวเลขหรือ 'middle')
$fill สีที่จะทำการเทเมื่อเป็นภาพที่มีส่วนโปร่งใส (white, black, transparent)
$image->crop(500, 500, 'center', 'middle');
getImageSize() ส่งกลับค่าขนาดของภาพในแบบ array ['width'] and ['height'] $size = $image->getImageSize();
$width = $size['width'];
$height = $size['height'];
resize($width, $height) เปลี่ยนขนาดภาพตามอัตราส่วน
$width ความกว้าง
$height ความสูง
$image->resize(500, 500);
resizeNoRatio($width, $height) เปลี่ยนขนาดภาพโดยไม่สนใจอัตราส่วน
$width ความกว้าง
$height ความสูง
$image->resizeNoRatio(1000, 500);
rotate($degree = '90') หมุนภาพ โดยค่า $degree จะหมุนทวนเข็มนาฬิกาเสมอ หากต้องการหมุน 90 องศาไปทางขวาตามเข็มนาฬิกาให้ใช้ 270
$degree ค่าองศาในการหมุนภาพ (0, 90, 180, 270) สำหรับผู้ใช้ PHP รุ่น 5.5 หรือใหม่กว่า สามารถใช้การ flip ได้โดยกำหนดเป็น (hor, vrt, horvrt)
$image->rotate(90);
watermarkImage($wm_img_path = '', $wm_img_start_x = 0, $wm_img_start_y = 0) เพิ่มลายน้ำให้กับภาพโดยใช้ลายน้ำแบบรูปภาพ
$wm_img_path พาธรูปภาพที่เป็นลายน้ำ
$wm_img_start_x ตำแหน่งเริ่มต้นในแกน x กำหนดเป็นตัวเลข หรือ 'left', 'center', 'right'
$wm_img_start_y ตำแหน่งเริ่มต้นในแกน y กำหนดเป็นตัวเลข หรือ 'top', 'middle', 'bottom'
$image->watermarkImage('watermark.png', 'center', 'middle');
watermarkText($wm_txt_text = '', $wm_txt_font_path = '', $wm_txt_start_x = 0, $wm_txt_start_y = 0, $wm_txt_font_size = 10, $wm_txt_font_color = 'transwhitetext', $wm_txt_font_alpha = 60) เพิ่มลายน้ำให้กับภาพโดยใช้ลายน้ำแบบข้อความ
$wm_txt_text ข้อความที่จะเป็นลายน้ำ
$wm_txt_font_path พาธไฟล์ที่เป็น true type font
$wm_txt_start_x ตำแหน่งเริ่มต้นในแกน x กำหนดเป็นตัวเลข หรือ 'left', 'center', 'right'
$wm_txt_start_y ตำแหน่งเริ่มต้นในแกน y กำหนดเป็นตัวเลข หรือ 'top', 'middle', 'bottom'
$wm_txt_font_size ขนาดตัวอักษร กำหนดเป็นตัวเลข
$wm_txt_font_color สีตัวอักษร กำหนดเป็น 'black', 'white', 'transwhitetext'
$wm_txt_font_alpha ความใสของตัวอักษร กำหนดเป็นตัวเลข (0-127)
$image->watermarkText('Copyright. 2013', 'tahoma.ttf', 'center', 'middle', 14);
save($file_name = '', $file_ext = '') บันทึกภาพลงเป็นไฟล์
$file_name พาธและชื่อไฟล์ที่จะบันทึก
$file_ext นามสกุลไฟล์
$image->save('image-resized/new-image.jpg');
show($file_ext = '') แสดงภาพทางเบราเซอร์
$file_ext นามสกุลไฟล์
$image->show();

ตัวอย่าง

ย่อภาพอย่างเดียว


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->resize(800, 800);
$image->show();

ขยายภาพอย่างเดียว (ถ้าภาพต้นฉบับเล็กกว่า)


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->allow_resize_larger = true;
$image->resize(1500, 1500);
$image->show();

ครอปภาพแล้วย่อ


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->crop(1000, 1000, 'center', 'middle');
$image->resize(800, 800);
$image->show();

ครอปภาพแล้วย่อแล้วหมุน 270 องศา


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->crop(1000, 1000, 'center', 'middle');
$image->resize(800, 800);
$image->rotate(270);
$image->show();

ย่อภาพครั้งละหลายๆรูป (ใช้การ save ไม่ใช้การ show)


include 'Okvee\Vimage\Vimage.php';

$image = new Okvee\Vimage\Vimage('/path/to/image1.jpg');
$image->resize(800, 800);
$image->save('/path/to/new-image1.jpg');

$image->clear();

$image = new Okvee\Vimage\Vimage('/path/to/image2.jpg');
$image->resize(800, 800);
$image->save('/path/to/new-image2.jpg');

$image->clear();

ตัวอย่างการใส่ลายน้ำ

ครอปภาพแล้วย่อแล้วใส่ลายน้ำแบบภาพ


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';
$watermark_file = __DIR__ . '/img-source/wm.png';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->crop(1000, 1000, 'center', 'middle');
$image->resize(800, 800);
$image->watermarkImage($watermark_file, 'center', 'middle');
$image->show();

ครอปภาพแล้วย่อแล้วใส่ลายน้ำแบบข้อความ


include 'Okvee\Vimage\Vimage.php';
$image_file = __DIR__ . '/img-source/beach.png';
$watermark_font = __DIR__ . '/font/circular.ttf';

if (!file_exists($image_file)) {
    die('Image file is not exists.');
}

$image = new Okvee\Vimage\Vimage($image_file);

header('Content-type: ' . $image->original_img_mime);

$image->crop(1000, 1000, 'center', 'middle');
$image->resize(800, 800);
$image->watermarkText('A cat. แมวเมี๊ยว.', $watermark_font, 'center', 'middle', 20, 'transwhitetext', 55);
$image->show();

นอกจากนี้ผู้พัฒนายังสามารถนำการ crop, resize, rotate มาใช้สลับกันไปมาหรือใช้ซ้ำๆ ในการจัดการกับภาพ 1 ภาพโดยที่ยังไม่ต้อง save ยกตัวอย่างเช่น
ย่อภาพก่อน แล้วครอป แล้วหมุน แล้วย่อภาพอีกที

หากพบข้อผิดพลาดใดๆ โปรดแจ้งผ่านทางช่องความคิดเห็นด้านล่างนี้.