imagetypes

(PHP 3 CVS only, PHP 4 >= 4.0.2, PHP 5)

imagetypes -- 返回当前 PHP 版本所支持的图像类型

说明

int imagetypes ( void )

本函数以比特字段方式返回与当前 PHP 版本关联的 GD 库所支持的图像格式。将返回以下结果,IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP| IMG_XPM。 例如要检查是否支持 PNG,这样做:

例子 1. imagetypes() 例子

<?php
if (imagetypes() & IMG_PNG) {
    echo
"PNG Support is enabled";
}
?>


add a note add a note User Contributed Notes
enyo
06-Nov-2003 11:32
Why not use this function?

<?php
function getSupportedImageTypes() {
  
$aSupportedTypes = array();

  
$aPossibleImageTypeBits = array(
      
IMG_GIF=>'GIF',
      
IMG_JPG=>'JPG',
      
IMG_PNG=>'PNG',
      
IMG_WBMP=>'WBMP'
  
);

   foreach (
$aPossibleImageTypeBits as $iImageTypeBits => $sImageTypeString) {
       if (
imagetypes() & $iImageTypeBits) {
          
$aSupportedTypes[] = $sImageTypeString;
       }
   }

   return
$aSupportedTypes;
}
?>
jocke at selincite dot IHATESP4M dot com
17-Oct-2003 05:56
I wrote this function that returns an array with the supported image types

<?php
function getSupportedImageTypes() {
      
$aSupportedTypes = array();
      
      
$aPossibleImageTypeBits = array(
              
"IMG_GIF",
              
"IMG_JPG",
              
"IMG_PNG",
              
"IMG_WBMP"
          
);
          
       foreach (
$aPossibleImageTypeBits as $iIndex => $sImageTypeBits) {
          
          
$sEval  = "if (";
          
$sEval .= "imagetypes() & " . $sImageTypeBits . "";
          
$sEval .= ") { return TRUE; } else { return FALSE; }";
          
           if (eval(
$sEval)) {
              
$aSupportedTypes[] = str_replace("IMG_", "", $sImageTypeBits);
           }
       }
      
       return
$aSupportedTypes;
   }
?>
Hope that helps someone :)

/Jocke Selin

PS, if you know of a better way that doesn't include eval(), please let me know.
jaldinger (at) consulturdorado (dot) com
09-Jan-2003 04:31
Please note that if only "GIF Read Support" is enabled, the
IMG_GIF bit will not be returned (at least on my system:
PHP 4.3.0/RH Linux 7.2).

To work around this issue, and also the issue that there is no
function that can tell me what image format a GD resource ID
refers to, I use the following switch statement to map the exif
IMAGETYPE_* constants to the GD IMG_* constants:

switch (exif_imagetype($file['tmp_name'])) {
   case IMAGETYPE_GIF:
       $image_type = IMG_GIF;
       break;
   case IMAGETYPE_JPEG:
       $image_type = IMG_JPG;
       break;
   case IMAGETYPE_PNG:
       $image_type = IMG_PNG;
       break;
   case IMAGETYPE_WBMP:
       $image_type = IMG_WBMP;
       break;
     default:
       $image_type = 0;
       break;
}

store this value together with the image data in a database
and later use the following IF statement to see if I can work
with that image (create a thumbnail, etc...)

if ($image_type & (imagetypes() | IMG_GIF)) {
   return $this->createJpegThumbailFromString($data, 46, 27);
} else {
   return file_get_contents($_SERVER['DOCUMENT_ROOT'] .
       '/gfx/no-thumbnail.jpg');
}

HTH anybody...

Joerg.