Verify ImageMagick installation

前端 未结 10 1484
一个人的身影
一个人的身影 2020-11-29 01:16

My web hosting said ImageMagic has been pre-installed on the server. I did a quick search for \"ImageMagick\" in the output of phpinfo() and I found nothing. I can\'t SSH in

相关标签:
10条回答
  • 2020-11-29 01:19

    This is as short and sweet as it can get:

    if (!extension_loaded('imagick'))
        echo 'imagick not installed';
    
    0 讨论(0)
  • 2020-11-29 01:20

    Try this:

    <?php
    //This function prints a text array as an html list.
    function alist ($array) {  
      $alist = "<ul>";
      for ($i = 0; $i < sizeof($array); $i++) {
        $alist .= "<li>$array[$i]";
      }
      $alist .= "</ul>";
      return $alist;
    }
    //Try to get ImageMagick "convert" program version number.
    exec("convert -version", $out, $rcode);
    //Print the return code: 0 if OK, nonzero if error. 
    echo "Version return code is $rcode <br>"; 
    //Print the output of "convert -version"    
    echo alist($out); 
    ?>
    
    0 讨论(0)
  • 2020-11-29 01:21

    To test only the IMagick PHP extension (not the full ImageMagick suite), save the following as a PHP file (testImagick.php) and then run it from console: php testImagick.php

    <?php
    $image = new Imagick();
    $image->newImage(1, 1, new ImagickPixel('#ffffff'));
    $image->setImageFormat('png');
    $pngData = $image->getImagesBlob();
    echo strpos($pngData, "\x89PNG\r\n\x1a\n") === 0 ? 'Ok' : 'Failed';
    echo "\n";
    

    credit: https://mlocati.github.io/articles/php-windows-imagick.html

    0 讨论(0)
  • 2020-11-29 01:24

    EDIT: The info and script below only applies to iMagick class - which is not added by default with ImageMagick!!!

    If I want to know if imagemagick is installed and actually working as a php extension, I paste this snippet into a web accessible file

    <?php
    
    error_reporting(E_ALL); 
    ini_set( 'display_errors','1');
    
    /* Create a new imagick object */
    $im = new Imagick();
    
    /* Create new image. This will be used as fill pattern */
    $im->newPseudoImage(50, 50, "gradient:red-black");
    
    /* Create imagickdraw object */
    $draw = new ImagickDraw();
    
    /* Start a new pattern called "gradient" */
    $draw->pushPattern('gradient', 0, 0, 50, 50);
    
    /* Composite the gradient on the pattern */
    $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);
    
    /* Close the pattern */
    $draw->popPattern();
    
    /* Use the pattern called "gradient" as the fill */
    $draw->setFillPatternURL('#gradient');
    
    /* Set font size to 52 */
    $draw->setFontSize(52);
    
    /* Annotate some text */
    $draw->annotation(20, 50, "Hello World!");
    
    /* Create a new canvas object and a white image */
    $canvas = new Imagick();
    $canvas->newImage(350, 70, "white");
    
    /* Draw the ImagickDraw on to the canvas */
    $canvas->drawImage($draw);
    
    /* 1px black border around the image */
    $canvas->borderImage('black', 1, 1);
    
    /* Set the format to PNG */
    $canvas->setImageFormat('png');
    
    /* Output the image */
    header("Content-Type: image/png");
    echo $canvas;
    ?>
    

    You should see a hello world graphic:

    enter image description here

    0 讨论(0)
  • 2020-11-29 01:28

    You can easily check for the Imagick class in PHP.

    if( class_exists("Imagick") )
    {
        //Imagick is installed
    }
    
    0 讨论(0)
  • 2020-11-29 01:30

    In bash:

    $ convert -version
    

    or

    $ /usr/local/bin/convert -version
    

    No need to write any PHP file just to check.

    0 讨论(0)
提交回复
热议问题