コード例 #1
0
 public function optimizeImage($imageToOptimize)
 {
     if ($this->_settings && $this->_settings->useServerImageOptim) {
         $this->setToolAvailability();
         Craft::import('plugins.amtools.libraries.PHPImageOptim.PHPImageOptim', true);
         Craft::import('plugins.amtools.libraries.PHPImageOptim.Tools.Common', true);
         Craft::import('plugins.amtools.libraries.PHPImageOptim.Tools.ToolsInterface', true);
         $imageOptim = new \PHPImageOptim\PHPImageOptim();
         $imageOptim->setImage($imageToOptimize);
         switch (strtolower(pathinfo($imageToOptimize, PATHINFO_EXTENSION))) {
             case 'gif':
                 return $this->optimizeGif($imageOptim);
                 break;
             case 'png':
                 return $this->optimizePng($imageOptim);
                 break;
             case 'jpg':
             case 'jpeg':
                 return $this->optimizeJpeg($imageOptim);
                 break;
         }
     } elseif ($this->_settings && $this->_settings->useImagickImageOptim) {
         return $this->_optimizeAsset($imageToOptimize);
     }
     return true;
 }
コード例 #2
0
ファイル: sample.php プロジェクト: bensquire/php-image-optim
<?php

include './vendor/autoload.php';
$advPng = new \PHPImageOptim\Tools\Png\AdvPng();
$advPng->setBinaryPath('/usr/local/bin/advpng');
$optiPng = new \PHPImageOptim\Tools\Png\OptiPng();
$optiPng->setBinaryPath('/usr/local/bin/optipng');
$pngOut = new \PHPImageOptim\Tools\Png\PngOut();
$pngOut->setBinaryPath('/usr/local/bin/pngout');
$pngCrush = new \PHPImageOptim\Tools\Png\PngCrush();
$pngCrush->setBinaryPath('/usr/local/bin/pngcrush');
$pngQuant = new \PHPImageOptim\Tools\Png\PngQuant();
$pngQuant->setBinaryPath('/usr/local/bin/pngquant');
$optim = new \PHPImageOptim\PHPImageOptim();
$optim->setImage('./tests/image/lenna-original.png');
$optim->chainCommand($pngQuant)->chainCommand($advPng)->chainCommand($optiPng)->chainCommand($pngCrush)->chainCommand($pngOut);
$optim->optimise();
コード例 #3
0
 public function multipleUpload($fs, $k, $fsTmpName)
 {
     $this->addInsert('mediaName', $fs['file']['name'][$k]);
     $this->setMediaName($fs['file']['name'][$k]);
     $this->addInsert('mediaType', $fs['file']['type'][$k]);
     $this->setMediaType($fs['file']['type'][$k]);
     $this->addInsert('mediaSizes', $fs['file']['size'][$k]);
     if (false === $this->moveUploadFile($fsTmpName, $this->buildTargetFile($this->buildTargetName($fs['file']['name'][$k])))) {
         throw new ErrorLogicModelException('Error upload file');
     } else {
         if (in_array($this->ext, $this->imageExtensions)) {
             $imageFile = Clean::get($this->getTargetPathFileName());
             $imgSize = new Size($imageFile);
             $imgSize->imgSize();
             if ($this->resizeImage > 0) {
                 $resize = new \ContentinumComponents\Images\CalculateResize($this->getResizeImage(), $imgSize->getWidth(), $imgSize->getHeight());
                 $nSize = $resize->getNewSize();
                 $nWidth = $nSize['width'];
                 $nHeight = $nSize['height'];
             } else {
                 $nWidth = $imgSize->getWidth();
                 $nHeight = $imgSize->getHeight();
             }
             $newImage = @imagecreatetruecolor($nWidth, $nHeight);
             switch ($this->ext) {
                 case 'JPG':
                 case 'JPEG':
                 case 'jpeg':
                 case 'jpg':
                     $jpegOptim = new \PHPImageOptim\Tools\Jpeg\JpegOptim();
                     $jpegOptim->setBinaryPath('/usr/bin/jpegoptim');
                     $jpegOptim->setOptimisationLevel(3);
                     imagecopyresampled($newImage, imagecreatefromjpeg($imageFile), 0, 0, 0, 0, $nWidth, $nHeight, $imgSize->getWidth(), $imgSize->getHeight());
                     imagejpeg($newImage, $imageFile, $this->getImageQuality());
                     $optim = new \PHPImageOptim\PHPImageOptim();
                     $optim->setImage($imageFile);
                     $optim->chainCommand($jpegOptim);
                     $optim->optimise();
                     break;
                 case "PNG":
                 case "png":
                     if ($this->resizeImage > 0) {
                         imageAlphaBlending($newImage, false);
                         imageSaveAlpha($newImage, true);
                         imagecopyresampled($newImage, imageCreateFromPng($imageFile), 0, 0, 0, 0, $nWidth, $nHeight, $imgSize->getWidth(), $imgSize->getHeight());
                         imagepng($newImage, $imageFile);
                     }
                     $pngQuant = new \PHPImageOptim\Tools\Png\PngQuant();
                     $pngQuant->setBinaryPath('/usr/bin/pngquant');
                     $optim = new \PHPImageOptim\PHPImageOptim();
                     $optim->setImage($imageFile);
                     $optim->chainCommand($pngQuant);
                     $optim->optimise();
                     break;
                 case "GIF":
                 case "gif":
                     if ($this->resizeImage > 0) {
                         imageAlphaBlending($newImage, false);
                         imageSaveAlpha($newImage, true);
                         imagecopyresampled($newImage, imagecreatefromgif($imageFile), 0, 0, 0, 0, $nWidth, $nHeight, $imgSize->getWidth(), $imgSize->getHeight());
                         imagegif($newImage, $imageFile);
                     }
                     $gifsicle = new \PHPImageOptim\Tools\Gif\Gifsicle();
                     $gifsicle->setBinaryPath('/usr/bin/gifsicle');
                     $optim = new \PHPImageOptim\PHPImageOptim();
                     $optim->setImage($imageFile);
                     $optim->chainCommand($gifsicle);
                     $optim->optimise();
                     break;
                 default:
                     break;
             }
             if ($this->resizeImage > 0) {
                 $this->addInsert('mediaDimensions', $nWidth . 'x' . $nHeight, true);
             }
             $this->addInsert('mediaSizes', filesize($imageFile), true);
         }
         if (in_array($this->ext, $this->imageExtensions)) {
             return 1;
         }
     }
 }