Imageresizer::resize PHP Méthode

resize() public méthode

画像をリサイズする
public resize ( $imgPath, $savePath = null, $newWidth = null, $newHeight = null, $trimming = false ) : boolean
Résultat boolean
    function resize($imgPath, $savePath = null, $newWidth = null, $newHeight = null, $trimming = false)
    {
        // 元画像のサイズを取得
        $imginfo = getimagesize($imgPath);
        $srcWidth = $imginfo[0];
        $srcHeight = $imginfo[1];
        $image_type = $imginfo[2];
        /* 処理できる画像は、縦×横のピクセル数が1,900,000程度迄の場合があった。*/
        /* アイデュのサーバーでは問題なかった */
        /*if($srcWidth > 1600 || $srcHeight > 1200){
        			unlink($imgPath);
        			return false;
        		}*/
        // 元となる画像のオブジェクトを生成
        switch ($image_type) {
            case IMAGETYPE_GIF:
                $srcImage = imagecreatefromgif($imgPath);
                break;
            case IMAGETYPE_JPEG:
                $srcImage = imagecreatefromjpeg($imgPath);
                break;
            case IMAGETYPE_PNG:
                $srcImage = imagecreatefrompng($imgPath);
                break;
            default:
                return false;
        }
        if (!$srcImage) {
            return false;
        }
        // 新しい画像のサイズを取得
        if (!$newWidth) {
            if ($srcHeight < $newHeight) {
                $rate = 1;
            } else {
                $rate = $srcHeight / $newHeight;
            }
        } elseif (!$newHeight) {
            if ($srcWidth < $newWidth) {
                $rate = 1;
            } else {
                $rate = $srcWidth / $newWidth;
            }
        } else {
            $w = $srcWidth / $newWidth;
            $h = $srcHeight / $newHeight;
            if ($w < 1 && $h < 1) {
                $rate = 1;
            } elseif ($w > $h) {
                $rate = $w;
            } else {
                $rate = $h;
            }
        }
        if (!$trimming) {
            $newWidth = $srcWidth / $rate;
            $newHeight = $srcHeight / $rate;
        }
        // 新しい画像のベースを作成
        switch ($image_type) {
            case IMAGETYPE_GIF:
                $newImage = imagecreatetruecolor($newWidth, $newHeight);
                $alpha = imagecolorallocatealpha($newImage, 255, 255, 255, 0);
                imagefill($newImage, 0, 0, $alpha);
                imagecolortransparent($newImage, $alpha);
                break;
            case IMAGETYPE_PNG:
                $newImage = imagecreatetruecolor($newWidth, $newHeight);
                imagealphablending($newImage, false);
                imagesavealpha($newImage, true);
                break;
            default:
                $newImage = imagecreatetruecolor($newWidth, $newHeight);
                $color = imagecolorallocatealpha($newImage, 255, 255, 255, 0);
                imagealphablending($newImage, true);
                imagesavealpha($newImage, true);
                imagefill($newImage, 0, 0, $color);
                break;
        }
        // 画像をコピーし、リサイズする
        $newImage = $this->_copyAndResize($srcImage, $newImage, $srcWidth, $srcHeight, $newWidth, $newHeight, $trimming);
        imagedestroy($srcImage);
        if ($savePath && file_exists($savePath)) {
            @unlink($savePath);
        }
        switch ($image_type) {
            case IMAGETYPE_GIF:
                if ($savePath) {
                    imagegif($newImage, $savePath);
                } else {
                    imagegif($newImage);
                }
                break;
            case IMAGETYPE_JPEG:
                imagejpeg($newImage, $savePath, 100);
                break;
            case IMAGETYPE_PNG:
                if ($savePath) {
                    imagepng($newImage, $savePath);
                } else {
                    imagepng($newImage);
                }
                break;
            default:
                return false;
        }
        imagedestroy($newImage);
        if ($savePath) {
            chmod($savePath, 0666);
        }
        return true;
    }

Usage Example

Exemple #1
0
 /**
  * 画像を保存する
  * 
  * @param array $data
  * @return array
  */
 public function saveImage($data)
 {
     // TODO インストール時にfilesの書き込み権限チェック&フォルダ作成
     $saveDir = WWW_ROOT . 'files' . DS . 'theme_configs' . DS;
     $images = array('logo', 'main_image_1', 'main_image_2', 'main_image_3', 'main_image_4', 'main_image_5');
     $thumbSuffix = '_thumb';
     $old = $this->findExpanded();
     foreach ($images as $image) {
         if (!empty($data['ThemeConfig'][$image]['tmp_name'])) {
             @unlink($saveDir . $old[$image]);
             $pathinfo = pathinfo($old[$image]);
             @unlink($saveDir . $pathinfo['filename'] . $thumbSuffix . $pathinfo['extension']);
             $fileName = $data['ThemeConfig'][$image]['name'];
             $ext = pathinfo($fileName, PATHINFO_EXTENSION);
             $filePath = $saveDir . $image . '.' . $ext;
             $thumbPath = $saveDir . $image . $thumbSuffix . '.' . $ext;
             move_uploaded_file($data['ThemeConfig'][$image]['tmp_name'], $filePath);
             $Imageresizer = new Imageresizer();
             $Imageresizer->resize($filePath, $thumbPath, 320, 320);
             $data['ThemeConfig'][$image] = $image . '.' . $ext;
         } else {
             unset($data['ThemeConfig'][$image]);
         }
     }
     return $data;
 }
All Usage Examples Of Imageresizer::resize