[PHP] จดบันทึกการทำ imagick ใน PHP 5.3.29 บน Windows | Linux
Spec คร่าวๆ ของเครื่องที่ใช้เทสด้วยสภาพแวดล้อมต่างๆ เลยออกมาประมาณนี้
- Appserve 2.5.10
- php-5.3.29-Win32-VC9-x86.zip (ใส่เพิ่มเข้าไปเองแทน 5.2.6)
ปัญหา หลักๆ ที่เจอเลยก็คือ ImageMagick เวอร์ชั่นใหม่ๆ (เหมือนจะ)ไม่รองรับกับ PHP เก่าๆ ซึ่งบนเว็บของ ImageMagick เองไม่มีเขียนอธิบายเอาไว้ อย่างเช่น ImageMagick-6.9.1-4-Q16-x64-dll.exe ตัวนี้ ผมลองเทสดูแล้ว ใช้กับ PHP 5.3.x ไม่ได้ครับ อาการที่เจอก็คือ ไม่มี Error ไม่มี Notice ทั้งๆที่ php.ini เองตั้งค่าเอาไว้ให้แสดง Error ทุกอย่าง แต่พอรันบน PHP 5.4 มี Error ให้เห็น
เลยต้องลองใช้ ImageMagick เวอร์ชั่นเก่าๆตาม Reference นั่นล่ะ ใครทำตามได้ก็โอเคครับ จบ ... แต่ถ้าใครอ่านแล้ว ก็ยัง งง อ่านต่อด้านล่างได้เลยฮับ ... แปลไทยมั่วๆ ดู ฮ่า ๆ ๆ ๆ ๆ ๆ
- โหลด ImageMagick เวอร์ชั่นนี้ก่อนเลยครับ: ImageMagick-6.7.7-5-Q16-windows-dll - http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/ (เวอร์ชั่นอื่นไม่ค่อยเวิร์คสำหรับผมเหมือนกัน ฮ่าาาาาา )
- ติดตั้งมันไว้ที่ C:\imagemagick, แล้วอย่าลืมติ๊กเลือก "Add application directory to your system path" ด้วยนะเออ
- ดาวโหลด Imagick DLL สำหรับ PHP จากที่นี่ครับ http://windows.php.net/downloads/pecl/releases/imagick/ ณ วันที่เขียนตอนนี้ใช้เวอร์ชั่น 3.3.0rc2 ครับผม
- แตกไฟล์ Imagick DLL ออกมาแล้วทำการก๊อบไฟล์ php_imagick.dll ไปไว้ใน C:\Appserv\php5\ext
- ก๊อบไฟล์ทั้งหมดที่ขึ้นต้นด้วย CORE_RL_* ไปไว้ใน C:\AppServ\Apache2.2\bin
- แก้ไขไฟล์ php.ini โดยเพิ่ม extension=php_imagick.dll
- จากนั้นก๊อบไฟล์ทั้งหมดที่อยู่ใน C:\imagemagick\modules\coders และ C:\imagemagick\modules\filters มาไว้ที่ C:\imagemagick เพื่อให้ ImageMagick มันรู้ว่ามี formats ไฟล์อะไรบ้างที่รองรับ
- ต่อไปเข้าเพิ่ม MAGICK_HOME ที่ Control Panel -> System -> Advanced Settings -> Environment Variables -> New System Variable -> MAGICK_HOME = C:\imagemagick
- Restart Appserv server and check phpinfo() for imagick plugin
- If last step does not work, restart Windows ถ้ารีสตาร์ทแล้วก็ยังไม่ได้ก็ reboot เครื่องจ้าาาาาาาาาา
ทดสอบ เทส เทส เทส เย้เย ใช้ try catch ได้เด้อค๊า หาไฟล์ที่ใช้ทดสอบได้จาก http://www.fileformat.info/format/tiff/sample/ (ไม่ได้ค่าโฆษณาห่าอะไรหรอก)
try {
$image = new Imagick();
$image->readImage('C:\Appserv\www\CCITT_1.TIF');
$image->writeImage('C:\Appserv\www\CCITT_1.png');
echo '<img src="CCITT_1.png">';
}
//catch exception
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
เป็นอันจบพิธี .... เห้ออออออ ไค่เหน่ยยยยยยย
Ref.
เพิ่มเติมบน Linux
จงตามไปอ่านนนน http://www.imagemagick.org/script/install-source.php
Comments
Post a Comment