Kotchasan PHP Framework

คู่มือการใช้งานคลาส 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 ด้วยฟังก์ชันที่หลากหลายและการตั้งค่าที่ยืดหยุ่น ช่วยให้การทำงานกับภาพเป็นเรื่องง่ายและมีประสิทธิภาพ ไม่ว่าคุณจะต้องการปรับขนาด, ตัดครอบ, เพิ่มลายน้ำ, หรือพลิกภาพ คลาสนี้สามารถตอบสนองความต้องการของคุณได้อย่างดีเยี่ยม

หัวข้อที่เกี่ยวข้อง