gd_info

(PHP 4 >= 4.3.0, PHP 5)

gd_info -- Retrieve information about the currently installed GD library

Description

array gd_info ( void )

Returns an associative array describing the version and capabilities of the installed GD library.

Таблица 1. Elements of array returned by gd_info()

AttributeMeaning
GD Versionstring value describing the installed libgd version.
Freetype Supportboolean value. TRUE if Freetype Support is installed.
Freetype Linkagestring value describing the way in which Freetype was linked. Expected values are: 'with freetype', 'with TTF library', and 'with unknown library'. This element will only be defined if Freetype Support evaluated to TRUE.
T1Lib Supportboolean value. TRUE if T1Lib support is included.
GIF Read Supportboolean value. TRUE if support for reading GIF images is included.
GIF Create Supportboolean value. TRUE if support for creating GIF images is included.
JPG Supportboolean value. TRUE if JPG support is included.
PNG Supportboolean value. TRUE if PNG support is included.
WBMP Supportboolean value. TRUE if WBMP support is included.
XBM Supportboolean value. TRUE if XBM support is included.

Пример 1. Using gd_info()

<?php
var_dump
(gd_info());
?>

The typical output is :

array(9) {
  ["GD Version"]=>
  string(24) "bundled (2.0 compatible)"
  ["FreeType Support"]=>
  bool(false)
  ["T1Lib Support"]=>
  bool(false)
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(false)
  ["JPG Support"]=>
  bool(false)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XBM Support"]=>
  bool(false)
}

See also imagepng(), imagejpeg(), imagegif(), imagewbmp(), and imagetypes().



gd_info
Michael Z
28-Sep-2005 12:40
An easy way to get the numeric value for the GD Version :
$Version = ereg_replace('[[:alpha:][:space:]()]+', '', $GDArray['GD Version']);
Hagan Fox
03-May-2005 04:35
This function safely determines the GD version, even on PHP versions earlier than 4.3 that lack the gd_info() function.  Use it to avoid having your script halt with a fatal error if you try to use a TrueColor function and the GD version isn't 2.0 or later.

You can optionally specify a version, but if you specify version 2 it might be overridden.  Once the version number is determined it's retained to speed future calls.

<?php
/**
* Get which version of GD is installed, if any.
*
* Returns the version (1 or 2) of the GD extension.
*/
function gdVersion($user_ver = 0)
{
   if (!
extension_loaded('gd')) { return; }
   static
$gd_ver = 0;
  
// Just accept the specified setting if it's 1.
  
if ($user_ver == 1) { $gd_ver = 1; return 1; }
  
// Use the static variable if function was called previously.
  
if ($user_ver !=2 && $gd_ver > 0 ) { return $gd_ver; }
  
// Use the gd_info() function if possible.
  
if (function_exists('gd_info')) {
      
$ver_info = gd_info();
      
preg_match('/\d/', $ver_info['GD Version'], $match);
      
$gd_ver = $match[0];
       return
$match[0];
   }
  
// If phpinfo() is disabled use a specified / fail-safe choice...
  
if (preg_match('/phpinfo/', ini_get('disable_functions'))) {
       if (
$user_ver == 2) {
          
$gd_ver = 2;
           return
2;
       } else {
          
$gd_ver = 1;
           return
1;
       }
   }
  
// ...otherwise use phpinfo().
  
ob_start();
  
phpinfo(8);
  
$info = ob_get_contents();
  
ob_end_clean();
  
$info = stristr($info, 'gd version');
  
preg_match('/\d/', $info, $match);
  
$gd_ver = $match[0];
   return
$match[0];
}
// End gdVersion()

// Usage:

if ($gdv = gdVersion()) {
   if (
$gdv >=2) {
       echo
'TrueColor functions may be used.';
   } else {
       echo
'GD version is 1.  Avoid the TrueColor functions.';
   }
} else {
   echo
"The GD extension isn't loaded.";
}
?>

The function only detects the GD version, but you could determine GD capabilities in a similar manner.
phpnet at furp dot com
08-Dec-2004 10:59
I updated the function below to include the GD Version info and any other string fields. The function only showed the bool values before.

// Retrieve information about the currently installed GD library
function describeGDdyn() {
  echo "\n<ul><li>GD support: ";
  if(function_exists("gd_info")){
   echo "<font color=\"#00ff00\">yes</font>";
   $info = gd_info();
   $keys = array_keys($info);
   for($i=0; $i<count($keys); $i++) {
       if(is_bool($info[$keys[$i]])) echo "</li>\n<li>" . $keys[$i] .": " . yesNo($info[$keys[$i]]);
       else echo "</li>\n<li>" . $keys[$i] .": " . $info[$keys[$i]];
   }
  } else { echo "<font color=\"#ff0000\">no</font>"; }
  echo "</li></ul>";
}

function yesNo($bool){
  if($bool) return "<font color=\"#00ff00\"> yes</font>";
  else return "<font color=\"#ff0000\"> no</font>";
}
yohami dot com - zerodj at hotmail dot com
14-Jan-2004 07:09
A cool resize / cropping script for creating thumbnails using mogrify

IMAGETEST.PHP

<?php

include 'mogrify.php';

// variables from flash (my website uses flash and php)
$picture="sample.jpg";
$fixedwidth=300;
$fixedheight=240;
//

cropimage($picture,$fixedwidth,$fixedheight,$mogrify);

 
?>

MOGRIFY.PHP

<?php
// walking the path
$mogrify="C:/apache/Imagik/mogrify.exe";

// ---------------------------------------- crop function

function cropimage($picture,$fixedwidth,$fixedheight,$mogrify) {

  
// GET IMG
  
$img = imagecreatefromjpeg($picture);
  
$width= imagesx($img);
  
$height= imagesy($img);
  
// CROP WIDTH
  
if($width!=$fixedwidth){
      
$ratio =$fixedwidth/$width;
      
$NewHeight=round($height*$ratio);
      
$NewWidth=round($width*$ratio);
      
exec( $mogrify." -resize ".$NewWidth."x".$NewHeight."! $picture");
      
exec( $mogrify." -crop ".$fixedwidth."x".$fixedheight."+0+0 $picture");
      
// REFRESH
      
$img = imagecreatefromjpeg($picture);
      
$width= imagesx($img);
      
$height= imagesy($img);
   }
  
// CROP HEIGHT
  
if($height!=$fixedheight){
      
$ratio =$fixedheight/$height;
      
$NewHeight=round($height*$ratio);
      
$NewWidth=round($width*$ratio);
      
exec( $mogrify." -resize ".$NewWidth."x".$NewHeight."! $picture");
      
exec( $mogrify." -crop ".$fixedwidth."x".$fixedheight."+0+0 $picture");
   }
  
//
  
ImageDestroy($img);
}

?>

yeah!
Elie De Brauwer <elie at de-brauwer dot be>
28-Aug-2003 08:40
Since I noted that gd_info() returned on my system more info than the manual said (11 fields instead of 9, the extra fields are FreeType Linkage Support and JIS-mapped Japanese Font Support), I wrote these two little functions that dump the information returend by gd_info() in a dynamical and colored way.

<?
function describeGDdyn(){
  echo
"<ul>";
  echo
"<li>GD support: ";
  if(
function_exists("gd_info")){
   echo
"<font color=\"#00ff00\">yes</font>";
  
$info = gd_info();
  
$keys  = array_keys($info);
   for(
$i=1;$i<count($keys);$i++){
     echo
"</li>\n<li>".$keys[$i] .": " . yesNo($info[$keys[$i]]);
   }

  }else{
   echo
"<font color=\"#ff0000\">no</font>";
  }
  echo
"</li></ul>";
}

function
yesNo($bool){
  if(
$bool){
   return
"<font color=\"#00ff00\"> yes</font>";
  }else{
   return
"<font color=\"#ff0000\"> no</font>";
  }
}

describeGDdyn();
?>
meuk at nospam dot quicknet dot nl
28-Apr-2003 11:32
this function, as well as other functions that rely on the gd library, generates an error when you don't have the extension configured in your php.ini file. I had some trouble finding out how to get it working so here are the steps I took on a clean (windows / apache)- install:

* In addition to the (windows binary) installer, I downloaded the zip package which has a lot of things the installer hasn't. I unpacked the extensions directory in my own c:\php\extensions dir.

* I changed some lines in php.ini:
  + find the extension_dir setting and set it to
   c:/PHP/extensions (or your own path of course)
  + found the ;extension=php_gd.dll
     line and removed the semicolon

* I restarted apache and it worked

Hope this helps you all out or at least gives you a valuable hint to get it working,

Good luck,

Rob
johnschaefer at gmx dot de
09-Apr-2003 05:25
this is a replacement for this function.
you can also use this function in php >= 4.3.

the handling is the same as the gd_info function (array gd_info(void))

<?php
$code
= 'function gd_info() {
       $array = Array(
                       "GD Version" => "",
                       "FreeType Support" => 0,
                       "FreeType Support" => 0,
                       "FreeType Linkage" => "",
                       "T1Lib Support" => 0,
                       "GIF Read Support" => 0,
                       "GIF Create Support" => 0,
                       "JPG Support" => 0,
                       "PNG Support" => 0,
                       "WBMP Support" => 0,
                       "XBM Support" => 0
                     );
       $gif_support = 0;

       ob_start();
       eval("phpinfo();");
       $info = ob_get_contents();
       ob_end_clean();
    
       foreach(explode("\n", $info) as $line) {
           if(strpos($line, "GD Version")!==false)
               $array["GD Version"] = trim(str_replace("GD Version", "", strip_tags($line)));
           if(strpos($line, "FreeType Support")!==false)
               $array["FreeType Support"] = trim(str_replace("FreeType Support", "", strip_tags($line)));
           if(strpos($line, "FreeType Linkage")!==false)
               $array["FreeType Linkage"] = trim(str_replace("FreeType Linkage", "", strip_tags($line)));
           if(strpos($line, "T1Lib Support")!==false)
               $array["T1Lib Support"] = trim(str_replace("T1Lib Support", "", strip_tags($line)));
           if(strpos($line, "GIF Read Support")!==false)
               $array["GIF Read Support"] = trim(str_replace("GIF Read Support", "", strip_tags($line)));
           if(strpos($line, "GIF Create Support")!==false)
               $array["GIF Create Support"] = trim(str_replace("GIF Create Support", "", strip_tags($line)));
           if(strpos($line, "GIF Support")!==false)
               $gif_support = trim(str_replace("GIF Support", "", strip_tags($line)));
           if(strpos($line, "JPG Support")!==false)
               $array["JPG Support"] = trim(str_replace("JPG Support", "", strip_tags($line)));
           if(strpos($line, "PNG Support")!==false)
               $array["PNG Support"] = trim(str_replace("PNG Support", "", strip_tags($line)));
           if(strpos($line, "WBMP Support")!==false)
               $array["WBMP Support"] = trim(str_replace("WBMP Support", "", strip_tags($line)));
           if(strpos($line, "XBM Support")!==false)
               $array["XBM Support"] = trim(str_replace("XBM Support", "", strip_tags($line)));
       }
      
       if($gif_support==="enabled") {
           $array["GIF Read Support"]  = 1;
           $array["GIF Create Support"] = 1;
       }

       if($array["FreeType Support"]==="enabled"){
           $array["FreeType Support"] = 1;    }
 
       if($array["T1Lib Support"]==="enabled")
           $array["T1Lib Support"] = 1;   
      
       if($array["GIF Read Support"]==="enabled"){
           $array["GIF Read Support"] = 1;    }
 
       if($array["GIF Create Support"]==="enabled")
           $array["GIF Create Support"] = 1;   

       if($array["JPG Support"]==="enabled")
           $array["JPG Support"] = 1;
          
       if($array["PNG Support"]==="enabled")
           $array["PNG Support"] = 1;
          
       if($array["WBMP Support"]==="enabled")
           $array["WBMP Support"] = 1;
          
       if($array["XBM Support"]==="enabled")
           $array["XBM Support"] = 1;
      
       return $array;
   }'
;

if(!
function_exists("gd_info")) eval($code);
?>

<Imagegetimagesize>
 Last updated: Tue, 15 Nov 2005