Tuesday 27 November 2012

How to output image in PHP

จากบทความก่อนหน้านี้ที่เคยแนะนำเกี่ยวกับการ Resize Image ใน PHP ไปแล้ว สำหรับบทความนี้ผมอยากจะมาแนะนำวิธีการ Output Image ใน PHP ดังนี้คือ เริ่มต้นจากการเตรียม Image File ก่อน (โดยอาจจะเป็น Image File ที่เตรียมไว้ล่วงหน้า หรือมาจากการ Resize) จากนั้นเราจะใช้คำสั่ง readfile เพื่ออ่าน content ที่อยู่ใน file พร้อมกับ output ออกมา แต่เนื่องจาก readfile จะส่งแค่ content ที่อยู่ใน file เท่านั้น ไม่ได้ส่ง header ตามมาตรฐาน HTTP ทำให้ browser ไม่รู้จัก ดังนั้นเราจะต้องสร้าง HTTP Header ขึ้นมาเอง โดยใช้คำสั่ง header โดยในที่นี้เราจะส่ง header 2 ตัว ซึ่งได้แก่ Content-Type และ Content-Length ไปพร้อมกับ Image เดี๋ยวลองดูในส่วนของ coding กันนะครับ

$file = 'images/todd_64x64.jpg';
header('Content-Type: image/jpg');
header('Content-Length: '.filesize($fle));
readfile($file);

ใน code ไม่มีอะไรยาก คงไม่ต้องอธิบายอะไรมาก ก็เริ่มจากการเตรียมตัวแปร จะนั้นก็สร้าง HTTP Header และใช้คำสั่ง readfile เพื่ออ่าน content ที่อยู่ใน file และส่งกลับคืนไป

หากใช้เทคนิคนี้ร่วมกับการ Resize Image จะช่วยให้เราไม่ต้องเตรียม Image สำหรับหน้าจอหลายขนาด เพียงแค่เตรียมภาพสำหรับขนาดหน้าจอใหญ่สุดที่จะรองรับ แล้วเราค่อย Resize โดยการ Scale Down ลง จะทำให้ภาพไม่เสียคุณภาพไปมาก

No comments:

Post a Comment