ติดปัญหา Error Class 'Imagick' not found (Imagemagick PHP)

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
eange08
PHP Super Hero Member
PHP Super Hero Member
Posts: 600
Joined: 22/12/2020 10:09 am

ติดปัญหา Error Class 'Imagick' not found (Imagemagick PHP)

Post by eange08 »

ทำการติดตั้ง imagick บน ubuntu ไปเรียบร้อยแล้ว แต่พอเรียกใช้กับ php ขึ้น Error
อยากจะทราบว่า
1. ต้อง load ไฟล์ dll ของ imagick ได้ที่ไหนและต้องวางที่ใด
2. ในส่วนของไฟล์ php.ini บน ubuntu จะต้องใส่ extention ของ imagick ใน path ใด
เพราะ php.ini จะมีอยู่ในโฟลเดอร์ที่เป็น PHP ที่อยู่ใน etc กับ opt

Error :

Code: Select all

Fatal error: Uncaught Error: Class 'Imagick' not found in /opt/lampp/htdocs/imagick/imagick_example.php:3 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/imagick/imagick_example.php on line 3

ส่วนของ code

Code: Select all

<?php
/* Read the image */
$im = new Imagick("test.jpg");

/* Thumbnail the image */
$im->thumbnailImage(200, null);

/* Create a border for the image */
$im->borderImage(new ImagickPixel("white"), 5, 5);

/* Clone the image and flip it */
$reflection = $im->clone();
$reflection->flipImage();

/* Create gradient. It will be overlayd on the reflection */
$gradient = new Imagick();

/* Gradient needs to be large enough for the image and the borders */
$gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black");

/* Composite the gradient on the reflection */
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);

/* Add some opacity. Requires ImageMagick 6.2.9 or later */
$reflection->setImageOpacity( 0.3 );

/* Create an empty canvas */
$canvas = new Imagick();

/* Canvas needs to be large enough to hold the both images */
$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");

/* Composite the original image and the reflection on the canvas */
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10);

/* Output the image*/
header("Content-Type: image/png");
echo $canvas;
?>
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 27089
Joined: 22/09/2008 6:18 pm
Contact:

Re: ติดปัญหา Error Class 'Imagick' not found (Imagemagick PHP)

Post by mindphp »

ถ้าติดตั้ง imagick และ php imagick แล้ว

php.ini
เพิ่ม

Code: Select all

extension="imagick.so"
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
User avatar
eange08
PHP Super Hero Member
PHP Super Hero Member
Posts: 600
Joined: 22/12/2020 10:09 am

Re: ติดปัญหา Error Class 'Imagick' not found (Imagemagick PHP)

Post by eange08 »

mindphp wrote: 25/12/2020 2:24 am ถ้าติดตั้ง imagick และ php imagick แล้ว

php.ini
เพิ่ม

Code: Select all

extension="imagick.so"
ขอบคุณค่ะ :biggrin: ใส่ใน php.ini และ imagick ทำงานได้แล้วนะคะ
เพิ่มเติม
- หากบางเครื่องใช้ extension="imagick.so" ไม่ได้ผล ก็สามารถใส่ได้อีกแบบคือ

Code: Select all

extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/imagick.so"
แต่ส่วนชื่อโฟลเดอร์ no-debug-non-zts-20121212 จะต้องเปลี่ยนให้เหมือนในเครื่องเรา เพราะตอนลงติดตั้ง imagick มันจะสร้างชื่อโฟลเดอร์ใหม่เสมอ
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 3 guests