วันพฤหัสบดีที่ 19 มิถุนายน พ.ศ. 2557

[ImageProcessing] การรวมภาพด้วย PHP

          เมื่อเราต้องการที่รวมภาพหลายๆ ภาพเข้าด้วยกันหรือ ต้องการจะจัดเรียงภาพตามต้องการเพื่อให้ได้ภาพที่ออกมาเป็นภาพเดียวไว้สำหรับแสดงหรือ นำไปใช้งานต่อ

          บทความนี้จะแสดงตัวอย่างการนำรูป 2 รูปมาต่อกันตามแนวตั้งให้ออกมาเป็นรูปเดียว โดยไฟล์ที่ใช้จะมี 4 ไฟล์ คือ

  1. ไฟล์รูป 2 รูป
  2. ไฟล์ test_combine_image.php (เป็นหน้าที่ใช้แสดงผล)
  3. ไฟล์ showImage.php (เป็นหน้าที่ใช้ประมวลผลภาพและแสดงออกมา)



ไฟล์ test_combine_image.php
<img src="images/image1.jpg" width="200"/><br><br>
<img src="images/image2.jpg" width="200"/><br><br>
<img src="showImage.php" width="200"/>
          จะเห็นได้ว่าจะมีการชี้ src ของ tag img ไปยัง showImage.php เพื่อนำรูปภาพที่ได้จากการประมวลผลแล้วมาแสดง

ไฟล์ showImage.php
<?php
header ("Content-type: image/png");
$srcImagePaths = Array('http://localhost/Test_image/images/image1.jpg'
,'http://localhost/Test_image/images/image2.jpg');
$size1 = getimagesize($srcImagePaths[0]);
$size2 = getimagesize($srcImagePaths[1]);
$image1 = imagecreatefromjpeg($srcImagePaths[0]);
$image2 = imagecreatefromjpeg($srcImagePaths[1]);
$resultImage = imagecreatetruecolor($size1[0], $size1[1]+$size2[1]);
imagecopy($resultImage, $image1, 0, 0, 0, 0, $size1[0], $size1[1]);
imagecopy($resultImage, $image2, 0, $size1[1], 0, 0, $size2[0], $size2[1]);
imagepng($resultImage);
?>
กำหนดผลการแสดงของหน้า PHP เป็นรูปภาพนามสกุล PNG
header ("Content-type: image/png");
การสร้างตัวแปรเพื่อเก็บข้อมูลของรูปภาพ
$srcImagePaths = Array('images/image1.jpg'); //ใช้กำหนดที่อยู่ของไฟล์รูป
$image1 = imagecreatefromjpeg($srcImagePaths[0]);
//ทำการดึงข้อมูลของไฟล์รูปมาเก็บในตัวแปร จากที่อยู่ของไฟล์รูปที่กำหนดไว้ข้างต้น
//ซึ่งตัว Function จะขึ้นอยู่กับนามสกุลของไฟล์รูปด้วยเช่น jpg จะใช้ imagecreatefromjpeg เป็นต้น
//ดูเพิ่มเติมได้ที่ PHP: imagecreatefromjpeg - Manual
การสร้างรูปภาพเปล่าๆขึ้นมา
$resultImage = imagecreatetruecolor($size1[0], $size1[1]+$size2[1]);
//กำหนด ความกว้างและสูงเข้าไป
การ Copy รูปภาพ ไปใส่อีกรูปภาพ
imagecopy($resultImage, $image1, 0, 0, 0, 0, $size1[0], $size1[1]);
//Parameter ดังนี้
//1 รูปภาพเป้าหมาย
//2 รูปภาพที่จะทำการ Copy ไปใส่ในรูปเป้าหมาย
//3 ตำแหน่ง x ของรูปภาพเป้าหมาย ที่จะนำรูปภาพ Copy ไปแสดง
//4 ตำแหน่ง y ของรูปภาพเป้าหมาย ที่จะนำรูปภาพ Copy ไปแสดง
//5 ตำแหน่ง x ของรูปภาพ Copy ที่จะใช้ Copy
//6 ตำแหน่ง y ของรูปภาพ Copy ที่จะใช้ Copy
//7 ความกว้างของรูปภาพ Copy ที่จะใช้ Copy
//8 ความสูงของรูปภาพ Copy ที่จะใช้ Copy
การแสดงผลรูปภาพ
imagepng($resultImage);
//เป็นการนำตัวแปรที่เก็บข้อมูลรูปภาพไว้มาแสดงออกทางหน้า PHP
//ซึ่งต้องกำหนด Header ตามข้างบนถึงจะแสดงเป็นรูปภาพ
//ตัว Function จะขึ้นอยู่กับนามสกุลไฟล์รูปภาพที่ต้องการแสดง
//เช่น ต้องการให้นามสกุลรูปภาพเป็น PNG ใช้ Function imagepng
//ดูเพิ่มเติมได้ที่ PHP: imagepng - Manual
การเช็ครายละเอียดของไฟล์รูปภาพ
$size1 = getimagesize($srcImagePaths[0]);
ผลที่ได้คือ
Array (
   [0] => 1024 //width
   [1] => 768 //height
   [2] => 2
   [3] => width="1024" height="768"
   [bits] => 8
   [channels] => 3
   [mime] => image/jpeg //image type
)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น