English 中文(简体)
• 如何避免在营地发出警报信号
原标题:
  • 时间:2009-06-06 07:44:24
  •  标签:

最近,我参与了该项目。 这里需要重新描述情况,并使用以下类别。

class SimpleImage 
{  
   var $image;
   var $image_type; 
   function load($filename) 
   {      
      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if($this->image_type == IMAGETYPE_JPEG) 
      {
         $this->image = imagecreatefromjpeg($filename);
      } 
      elseif( $this->image_type == IMAGETYPE_GIF ) 
      {
         $this->image = imagecreatefromgif($filename);
      } 
      elseif( $this->image_type == IMAGETYPE_PNG ) 
      {
         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) 
   {
      if( $image_type == IMAGETYPE_JPEG ) 
      {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) 
      {
         imagegif($this->image,$filename);         
      } elseif( $image_type == IMAGETYPE_PNG ) 
      {
         imagepng($this->image,$filename);
      }   
      if( $permissions != null) 
      {
         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) 
   {
      if( $image_type == IMAGETYPE_JPEG ) 
      {
         imagejpeg($this->image);
      } 
      elseif( $image_type == IMAGETYPE_GIF ) 
      {
         imagegif($this->image);         
      } 
      elseif( $image_type == IMAGETYPE_PNG ) 
      {
         imagepng($this->image);
      }   
   }
   function getWidth() 
   {
      return imagesx($this->image);
   }
   function getHeight() 
   {      
      return imagesy($this->image);
   }
   function resizeToHeight($height) 
   {
      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }
   function resizeToWidth($width) 
   {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }
   function scale($scale) 
   {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100; 
      $this->resize($width,$height);
   }
   function resize($width,$height) 
   {      
      $new_image = imagecreatetruecolor($width, $height);      
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;   
   }      
}

当使用该类别时,它会发出警告信息,如 be

Warning: getimagesize(seeker/SeekerPhoto/so.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:xampphtdocsjobinsphoto.php on line 11

Warning: images): supplied argument is not a valid Image resource in C:xampphtdocsjobinsphoto.php on line 60

Warning: imagesy(): supplied argument is not a valid Image resource in C:xampphtdocsjobinsphoto.php on line 64

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:xampphtdocsjobinsphoto.php on line 87

如何避免这种警告信息。 谢谢你。

问题回答

你的方法没有任何错误处理过去如此。

例如,装载()方法。 如果档案首先存在,那么通过收集信息就没有什么意义。 如果听觉失败,那么使用其返回价值检验某些图像类型,就更不明智。

a (未测试)实例:

function load($filename) {
    if ( !is_readable($filename) ) {
        throw new ErrorException("file not readable");
    }
    else if ( false===($image_info=getimagesize($filename)) ) {
        throw new ErrorException("unable to get informations from image file");
    }
    //
    switch( $image_info[2] ) {
        case IMAGETYPE_JPEG:
            $fn =  imagecreatefromjpeg ;
            break;
        case IMAGETYPE_GIF:
            $fn =  imagecreatefromgif ;
            break;
        case IMAGETYPE_PNG:
            $fn =  imagecreatefrompng ;
            break;
        default:
            throw new ErrorException("unknown image type");
    }
    $this->image = $fn($filename);
    if ( false===$this->image ) {
        throw new ErrorException("$fn failed");
    }
    $this->image_type = $image_info[2];
    return $this->image_type;
}

https://stackoverflow.com/questions/1363876/handle-error-time-getimagesize-cant-find-a-file> 出现错误时,可发现文件:

$img_url = "not-existing.jpg";

if ( is_file($img_url) && is_array($img_size = getimagesize($img_url)) ) {
  print_r($img_size);
  echo "OK";
} else {
  echo "NOT OK";
}




相关问题
热门标签