2011-08-21 118 views

回答

0

我用这个功能来做到这一点,非常简单和易于使用的信息。首先把这个功能放到你可以称之为的地方。

public function Resize_image($width = 0, $height = 0, $quality = 90, $filename_in = null, $filename_out = null) 
{ 
    $this->Filename = $filename_in; 
    $this->Extension = strtolower($this->Get_file_extension($this->Filename)); 

    $size = getimagesize($this->Filename); 
    $ratio = $size[0]/$size[1]; 
    if ($ratio >= 1){ 
     $scale = $width/$size[0]; 
    } else { 
     $scale = $height/$size[1]; 
    } 
    // make sure its not smaller to begin with! 
    if ($width >= $size[0] && $height >= $size[1]){ 
     $scale = 1; 
    } 

    // echo $fileext; 
    switch ($this->Extension) 
    { 
     case "jpg": 
      $im_in = imagecreatefromjpeg($this->Filename); 
      $im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale); 
      imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]); 
      imagejpeg($im_out, $filename_out, $quality); 
     break; 
     case "gif": 
      $im_in = imagecreatefromgif($this->Filename); 
      $im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale); 
      imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]); 
      imagegif($im_out, $filename_out, $quality); 
     break; 
     case "png": 
      $im_in = imagecreatefrompng($this->Filename); 
      $im_out = imagecreatetruecolor($size[0] * $scale, $size[1] * $scale); 
      imagealphablending($im_in, true); // setting alpha blending on 
      imagesavealpha($im_in, true); // save alphablending setting (important) 
      imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $size[0] * $scale, $size[1] * $scale, $size[0], $size[1]); 
      imagepng($im_out, $filename_out, 9); 
     break; 
    } 
    imagedestroy($im_out); 
    imagedestroy($im_in); 
} 

现在你可以使用这个功能,像这样来调整图像并将其复制到所需的目录。

Resize_image($width, $height, $quality=90, $filename_in, $filename_out) 
Example.. 
Resize_image(150, 150, 90, "Directory".$image, "Directory".$image_without_extension."_thumb.".$image_ext); //makes file_thumb.ext 
+0

谢谢,结束了使用的这种变体。 – RonnieT

2

你可能想看看PHP文档:Handling file uploadsGD and Image Functions

一般情况下,你必须:

  1. 上传文件(并检查它是否是真正的用is_uploaded_file上传的文件)
  2. 检测图像类型与getimagesize然后用适当的imagecreatefrom*函数来创建图像资源($img

    $thumb = imagecreatetruecolor($width, $height); 
    imagecopyresampled($thumb, $img, 0, 0, 0, 0, $width, $height, imagexs($img), imagesy($img)); 
    
  3. :像这样的东西)
  4. 调整图像大小

  5. 保存缩略图:

    imagejpeg($thumb, 'file.jpg', 85); 
    imagedestroy($thumb); // free memory 
    imagedestroy($img); // free memory 
    
  6. 保存,你需要你的MySQL数据库