คู่มือการใช้งานคลาส Image ใน Kotchasan สำหรับการจัดการและปรับแต่งภาพใน PHP
คลาส Image
ในแพ็กเกจ Kotchasan
เป็นเครื่องมือที่ทรงพลังสำหรับการจัดการและปรับแต่งภาพในภาษา PHP คลาสนี้รองรับการตัดครอบภาพ, การปรับขนาด, การเพิ่มลายน้ำ, การพลิกภาพ, และการจัดการคุณภาพของภาพ รองรับฟอร์แมตภาพหลายชนิด เช่น JPEG, PNG, GIF และ WEBP
การใช้งานเบื้องต้น
ก่อนที่จะเริ่มใช้งานคลาส Image
คุณต้องแน่ใจว่าคุณได้ติดตั้งและเรียกใช้แพ็กเกจ Kotchasan
อย่างถูกต้อง และมีการตั้งค่าพาธสำหรับไฟล์ฟอนต์ที่ใช้ในการเพิ่มลายน้ำ
use Kotchasan\Image;
// ตั้งค่าคุณภาพภาพ (ค่าเริ่มต้นคือ 75)
Image::setQuality(80);
คุณสมบัติของคลาส
คุณสมบัติสาธารณะ (public static
)
-
$quality
ระบุคุณภาพของภาพสำหรับรูปแบบ JPEG หรือ WEBP โดยมีค่าอยู่ในช่วง 0-100 (ค่าเริ่มต้นคือ 75)Image::$quality = 85; -
$backgroundColor
กำหนดสีพื้นหลังเริ่มต้นของภาพในรูปแบบอาเรย์ [R, G, B] (ค่าเริ่มต้นคือ [255, 255, 255] ซึ่งเป็นสีขาว)Image::$backgroundColor = [0, 0, 0]; // สีดำ -
$font
กำหนดพาธไปยังไฟล์ฟอนต์ที่ใช้สำหรับเพิ่มลายน้ำในรูปแบบข้อความ (ค่าเริ่มต้นใช้ฟอนต์ที่ROOT_PATH.'skin/fonts/leelawad.ttf'
)Image::$font = '/path/to/your/font.ttf';
เมธอดของคลาส
1. crop
คำอธิบาย
เมธอด crop
ใช้สำหรับตัดครอบหรือปรับขนาดภาพให้พอดีกับขนาดที่กำหนด พร้อมทั้งสามารถเพิ่มลายน้ำและกำหนดสีพื้นหลังได้ รองรับการบันทึกภาพในรูปแบบ JPEG หรือ WEBP
พารามิเตอร์
$source
(string
) พาธของไฟล์ภาพต้นฉบับ$target
(string
) พาธของไฟล์เป้าหมายที่จะบันทึกภาพที่ถูกตัดครอบหรือปรับขนาด$thumbwidth
(int
) ความกว้างของภาพย่อ$thumbheight
(int
) ความสูงของภาพย่อ$watermark
(string
, ไม่บังคับ) ข้อความลายน้ำที่ต้องการเพิ่มลงในภาพ$fit
(bool
, ไม่บังคับ) หากตั้งเป็นtrue
จะปรับขนาดภาพให้พอดีภายในขอบเขตที่กำหนด หากfalse
จะตัดครอบภาพ
ผลลัพธ์
bool
คืนค่าtrue
หากประมวลผลภาพสำเร็จ หรือfalse
หากเกิดข้อผิดพลาด
ตัวอย่างการใช้งาน
$sourceImage = imagecreatefromjpeg('images/original.jpg');
$flippedImage = Image::flip($sourceImage);
if ($flippedImage) {
imagejpeg($flippedImage, 'images/flipped.jpg');
echo "การพลิกภาพสำเร็จ!";
} else {
echo "เกิดข้อผิดพลาดในการพลิกภาพ.";
}
2. flip
คำอธิบาย
เมธอด flip
ใช้สำหรับพลิกภาพแนวนอน
พารามิเตอร์
$imgsrc
(\GdImage
) แหล่งภาพต้นฉบับที่ต้องการพลิก
ผลลัพธ์
\GdImage
คืนค่าภาพที่ถูกพลิก หรือfalse
หากเกิดข้อผิดพลาด
ตัวอย่างการใช้งาน
$sourceImage = imagecreatefromjpeg('images/original.jpg');
$flippedImage = Image::flip($sourceImage);
if ($flippedImage) {
imagejpeg($flippedImage, 'images/flipped.jpg');
echo "การพลิกภาพสำเร็จ!";
} else {
echo "เกิดข้อผิดพลาดในการพลิกภาพ.";
}
3. info
คำอธิบาย
เมธอด info
ใช้สำหรับดึงข้อมูลเกี่ยวกับภาพ เช่น ความกว้าง, ความสูง และประเภท MIME
พารามิเตอร์
$source
(string
) พาธและชื่อไฟล์ของภาพ
ผลลัพธ์
array|bool
คืนค่าเป็นอาเรย์ที่ประกอบด้วยwidth
,height
, และmime
หากสำเร็จ หรือfalse
หากไม่สามารถดึงข้อมูลได้
ตัวอย่างการใช้งาน
$source = 'images/original.jpg';
$info = Image::info($source);
if ($info) {
echo "ความกว้าง: " . $info['width'] . " พิกเซล\n";
echo "ความสูง: " . $info['height'] . " พิกเซล\n";
echo "ประเภท MIME: " . $info['mime'];
} else {
echo "ไม่สามารถดึงข้อมูลภาพได้.";
}
4. orient
คำอธิบาย
เมธอด orient
ใช้สำหรับปรับทิศทางภาพตามข้อมูล EXIF ของภาพต้นฉบับ เพื่อให้ภาพแสดงในทิศทางที่ถูกต้อง
พารามิเตอร์
$source
(string
) พาธของไฟล์ภาพต้นฉบับ
ผลลัพธ์
\GdImage|bool
คืนค่าภาพที่ถูกปรับทิศทาง หรือfalse
หากไม่สามารถปรับทิศทางได้
ตัวอย่างการใช้งาน
$source = 'images/oriented.jpg';
$orientedImage = Image::orient($source);
if ($orientedImage) {
imagejpeg($orientedImage, 'images/oriented_correctly.jpg');
echo "การปรับทิศทางภาพสำเร็จ!";
} else {
echo "ไม่สามารถปรับทิศทางภาพได้.";
}
5. resize
คำอธิบาย
เมธอด resize
ใช้สำหรับปรับขนาดภาพ, เพิ่มลายน้ำ (ถ้าต้องการ), และบันทึกภาพในรูปแบบที่ระบุ (JPEG หรือ WEBP)
พารามิเตอร์
$source
(string
) พาธเต็มของไฟล์ภาพต้นฉบับ$target
(string
) ไดเรกทอรีที่ต้องการบันทึกภาพที่ปรับขนาด$name
(string
) ชื่อไฟล์ภาพที่ต้องการบันทึก$width
(int
, ไม่บังคับ) ความกว้างที่ต้องการปรับขนาด (พิกเซล). หากตั้งค่าเป็น 0 จะใช้ขนาดเดิม$watermark
(string
, ไม่บังคับ) ข้อความลายน้ำที่ต้องการเพิ่มลงในภาพ$forceConvert
(bool
, ไม่บังคับ) หากตั้งเป็นtrue
จะบังคับแปลงภาพเป็น JPEG หรือ WEBP แม้ว่าจะไม่จำเป็นต้องปรับขนาด (ค่าเริ่มต้นคือtrue
)
ผลลัพธ์
array|bool
คืนค่าเป็นอาเรย์ที่ประกอบด้วยname
,width
,height
, และmime
หากสำเร็จ หรือfalse
หากเกิดข้อผิดพลาด
ตัวอย่างการใช้งาน
$source = 'images/original.jpg';
$target = 'images/resized/';
$name = 'resized_image.jpg';
$width = 800;
$watermark = '© MyWebsite';
$forceConvert = true;
$result = Image::resize($source, $target, $name, $width, $watermark, $forceConvert);
if ($result) {
echo "การปรับขนาดและบันทึกภาพสำเร็จ! รายละเอียดภาพ:\n";
print_r($result);
} else {
echo "เกิดข้อผิดพลาดในการปรับขนาดภาพ.";
}
6. watermarkText
คำอธิบาย
เมธอด watermarkText
ใช้สำหรับเพิ่มลายน้ำในรูปแบบข้อความลงในภาพที่ระบุ
พารามิเตอร์
$imgsrc
(\GdImage
) แหล่งภาพต้นฉบับที่ต้องการเพิ่มลายน้ำ$text
(string
) ข้อความลายน้ำที่ต้องการเพิ่ม$pos
(string
, ไม่บังคับ) ตำแหน่งของลายน้ำ ('center'
,'bottom'
,'left'
,'right'
)$color
(string
, ไม่บังคับ) สีของลายน้ำในรูปแบบเลขฐานสิบหก (ค่าเริ่มต้น'CCCCCC'
)$font_size
(int
, ไม่บังคับ) ขนาดฟอนต์ของลายน้ำ (ค่าเริ่มต้น20
)$opacity
(int
, ไม่บังคับ) ความโปร่งใสของลายน้ำ (0-100, ค่าเริ่มต้น50
)
ผลลัพธ์
\GdImage
: คืนค่าภาพที่ถูกเพิ่มลายน้ำ
ตัวอย่างการใช้งาน
$sourceImage = imagecreatefromjpeg('images/original.jpg');
$text = '© MyWebsite';
$position = 'bottom';
$color = 'FF0000'; // สีแดง
$fontSize = 15;
$opacity = 70;
$watermarkedImage = Image::watermarkText($sourceImage, $text, $position, $color, $fontSize, $opacity);
if ($watermarkedImage) {
imagejpeg($watermarkedImage, 'images/watermarked.jpg');
echo "การเพิ่มลายน้ำสำเร็จ!";
} else {
echo "เกิดข้อผิดพลาดในการเพิ่มลายน้ำ.";
}
7. setQuality
คำอธิบาย
เมธอด setQuality
ใช้สำหรับตั้งค่าคุณภาพของภาพสำหรับรูปแบบ JPEG หรือ WEBP
พารามิเตอร์
$quality
(int
): ระดับคุณภาพของภาพ (0-100)
ผลลัพธ์
- ไม่มีการคืนค่า (เพียงแค่ตั้งค่าคุณสมบัติคลาส)
ตัวอย่างการใช้งาน
Image::setQuality(90);
ฟังก์ชันเสริม
เมธอดส่วนตัว (private static
)
rotateImage
: หมุนภาพตามมุมที่กำหนดflipImage
: พลิกภาพตามแนวตั้ง
หมายเหตุ: เมธอดเหล่านี้เป็นเมธอดภายในที่ใช้ในคลาส
Image
เท่านั้น ไม่สามารถเรียกใช้งานจากภายนอกได้
ข้อควรระวังและข้อแนะนำ
- ตรวจสอบให้แน่ใจว่า GD Library ถูกติดตั้งและเปิดใช้งานในเซิร์ฟเวอร์ของคุณ เพราะคลาสนี้พึ่งพา GD Library สำหรับการประมวลผลภาพ
- ตั้งค่าพาธที่ถูกต้องสำหรับฟอนต์ที่ใช้ในการเพิ่มลายน้ำ (
$font
) เพื่อหลีกเลี่ยงข้อผิดพลาด - เมื่อใช้งานเมธอด
crop
หรือresize
ควรตรวจสอบสิทธิ์การเขียนไฟล์ในไดเรกทอรีเป้าหมาย - สำหรับการเพิ่มลายน้ำ ควรเลือกสีและความโปร่งใสที่เหมาะสมเพื่อให้ลายน้ำไม่บดบังรายละเอียดของภาพต้นฉบับ
ตัวอย่างการใช้งานเพิ่มเติม
การตัดครอบและปรับขนาดภาพพร้อมเพิ่มลายน้ำ
<?php
use Kotchasan\Image;
// ตั้งค่าคุณภาพภาพ
Image::setQuality(80);
// ตัดครอบภาพ
$source = 'images/photo.jpg';
$target = 'images/photo_thumbnail.jpg';
$width = 300;
$height = 200;
$watermark = '© MyWebsite';
$fit = false;
if (Image::crop($source, $target, $width, $height, $watermark, $fit)) {
echo "ภาพถูกตัดครอบและบันทึกเรียบร้อยแล้ว!";
} else {
echo "ไม่สามารถประมวลผลภาพได้.";
}
การปรับขนาดภาพและเพิ่มลายน้ำแบบกำหนดเอง
<?php
use Kotchasan\Image;
// ตั้งค่าคุณภาพภาพ
Image::setQuality(90);
// ปรับขนาดภาพ
$source = 'images/high_resolution.jpg';
$target = 'images/resized/';
$name = 'resized_high_resolution.jpg';
$width = 1024;
$watermark = '© MyWebsite';
$forceConvert = true;
$result = Image::resize($source, $target, $name, $width, $watermark, $forceConvert);
if ($result) {
echo "ภาพถูกปรับขนาดและบันทึกเรียบร้อยแล้ว:\n";
print_r($result);
} else {
echo "ไม่สามารถปรับขนาดภาพได้.";
}
การดึงข้อมูลภาพ
<?php
use Kotchasan\Image;
$source = 'images/photo.jpg';
$info = Image::info($source);
if ($info) {
echo "ความกว้าง: " . $info['width'] . " พิกเซล\n";
echo "ความสูง: " . $info['height'] . " พิกเซล\n";
echo "ประเภท MIME: " . $info['mime'];
} else {
echo "ไม่สามารถดึงข้อมูลภาพได้.";
}
การพลิกภาพแนวนอน
<?php
use Kotchasan\Image;
// โหลดภาพต้นฉบับ
$sourceImage = imagecreatefromjpeg('images/photo.jpg');
// พลิกภาพ
$flippedImage = Image::flip($sourceImage);
if ($flippedImage) {
// บันทึกภาพที่ถูกพลิก
imagejpeg($flippedImage, 'images/photo_flipped.jpg');
echo "ภาพถูกพลิกเรียบร้อยแล้ว!";
} else {
echo "ไม่สามารถพลิกภาพได้.";
}
การเพิ่มลายน้ำข้อความในตำแหน่งที่กำหนด
<?php
use Kotchasan\Image;
// โหลดภาพต้นฉบับ
$sourceImage = imagecreatefromjpeg('images/photo.jpg');
// เพิ่มลายน้ำ
$watermarkText = '© MyWebsite';
$position = 'center'; // ตำแหน่ง: center, bottom, left, right
$color = 'FFFFFF'; // สีขาว
$fontSize = 24;
$opacity = 60;
$watermarkedImage = Image::watermarkText($sourceImage, $watermarkText, $position, $color, $fontSize, $opacity);
// บันทึกภาพที่ถูกเพิ่มลายน้ำ
if ($watermarkedImage) {
imagejpeg($watermarkedImage, 'images/photo_watermarked.jpg');
echo "ลายน้ำถูกเพิ่มเรียบร้อยแล้ว!";
} else {
echo "ไม่สามารถเพิ่มลายน้ำได้.";
}
สรุป
คลาส Image
จากแพ็กเกจ Kotchasan
เป็นเครื่องมือที่ครบครันสำหรับการจัดการภาพใน PHP ด้วยฟังก์ชันที่หลากหลายและการตั้งค่าที่ยืดหยุ่น ช่วยให้การทำงานกับภาพเป็นเรื่องง่ายและมีประสิทธิภาพ ไม่ว่าคุณจะต้องการปรับขนาด, ตัดครอบ, เพิ่มลายน้ำ, หรือพลิกภาพ คลาสนี้สามารถตอบสนองความต้องการของคุณได้อย่างดีเยี่ยม