-1

我正在从一个 URL 调整和保存多个图像的大小并想知道如何压缩这些图像,因为保存在 640x320 文件夹中的图像是 400kb,这太大了,我想知道如何压缩这些图像更多,谢谢提前寻求任何建议!

PHP 调整大小和大小处理程序

include("../includes/picture-resize.php");

$image = $_POST['thumbnail'];
$slug = $_POST['slug'];
$images = $_POST['screenshots'];
$list = explode(",", $images);      
$listlength = count($list);

$i = 0;

$image = $_POST['thumbnail'];

$path = parse_url($image, PHP_URL_PATH);

$filename = $slug.'-'.$i;

$extension = pathinfo($path, PATHINFO_EXTENSION);

$file = $filename.'.'.$extension;

file_put_contents('../tmp/' . $file, file_get_contents($image));

$picture = new pic_resize();

$picture->load('../tmp/'.$file);

$picture->resizeToWidth(125);

mkdir('../images/125x125/'.$slug);

$picture->save('../images/125x125/'.$slug.'/'.$file, $picture->image_type);

unlink('../tmp/'.$file);

$thumbnail = $file;

$new_list = array();

mkdir('../images/640x320/'.$slug);

mkdir('../images/310x205/'.$slug);

while($listlength > $i) {

    $path = parse_url($list[$i], PHP_URL_PATH);

    $filename = $slug.'-'.$i;

    $extension = pathinfo($path, PATHINFO_EXTENSION);

    $file = $filename.'.'.$extension;

    file_put_contents('../tmp/' . $file, file_get_contents($list[$i]));

    $picture = new pic_resize();

    $picture->load('../tmp/'.$file);

    $picture->resizeToWidth(640);

    $picture->save('../images/640x320/'.$slug.'/'.$file, $picture->image_type);

    $picture->resizeToWidth(310);

    $picture->save('../images/310x205/'.$slug.'/'.$file, $picture->image_type);

    unlink('../tmp/'.$file);

    array_push($new_list, $file);

    $i++;
}

PHP 调整大小类

    class pic_resize{

   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, $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,9,PNG_FILTER_PAETH);
      }   
      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);
         imagealphablending($this->image, false);
        imagesavealpha($this->image, true);

      }   
   }
   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);
      imagealphablending($new_image, false);
      imagesavealpha($new_image, true);

      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());


      $this->image = $new_image;   
   }      
}
4

1 回答 1

0

第三个参数:
JPEG 质量:压缩级别:从 0(最大压缩)到 100(最小压缩)。
http://www.php.net/manual/en/function.imagejpeg.php

PNG 质量:压缩级别:从 0(无压缩)到 9。
http://www.php.net/manual/en/function.imagepng.php

请注意,jpeg 和 png 之间的质量/大小设置非常不同/倒退

于 2013-04-27T19:24:08.470 回答