スポンサードリンク

CakePHP
CakePHP

前回、画像をアップロードしてみましたが、

画像をアップロードした時に

リサイズをしてくれるものがあると便利なので

簡単にリサイズしてくれるResizeimg Classを

実装してみました。

スポンサードリンク

Resizeimg Classをダウンロード

Resizeimg Class
Resizeimg Class

Resizeimg Class(PHPクラス)

本家のサイトへ行ってResizeimg Classをダウンロードします。

Resizeimg Class ダウンロード
Resizeimg Class ダウンロード

赤枠のところからダウンロードします。

※現在のバージョンは2.1.7です。

ダウンロードしたファイを解凍すると

「resizeimg.class.php」があります。

このファイルを使います。

Resizeimg Classを設置

「resizeimg.class.php」をapp/Venderの中に保存します。

今回は「Resize」というフォルダを作って

その中に入れます。

パスはこんな感じ

app/Vender/Resize/resizeimg.class.php

スポンサードリンク

コントローラーでResizeimg Classを使用

前回作った画像アップのコントローラーにResizeimg Classを
(CakePHP2.x) 画像のアップロードの仕方

使えるように変更します。

(例)PostsController.php

public function fileup(){
//resizeimg.classを読み込む
App::import('Vendor', 'ResizeimgClass', array('file' => 'Resize' . DS . 'resizeimg.class.php'));
$RI = new resize_image();	//クラスの作成
  if ($this->request->is('post') || $this->request->is('put')) {
    //画像の保存
    if($this->Post->save($this->request->data)){
・・・

「resizeimg.class.php」を読み込んで

クラスを作成します。

次にリサイズして保存します。

先ほどのコントローラーの続きで

(例)PostsController.php

//画像の保存
if($this->Post->save($this->request->data)){
   move_uploaded_file($image['tmp_name'], $path . DS . $image['name']);
   $old_path = $path . DS . $image['name'];  //保存される画像のパス
   $resize_path = "../../app/webroot/img/" . DS . $image['name'];  //resizeimg.class.phpから見た画像ファイルへのパス
   //画像の作成(縦・横最大640px)
   //画像縦横サイズを取得
   $wh_size = getimagesize($resize_path);
   $w = $wh_size[0];  // width
   $h = $wh_size[1];    //height
   if ($w >= $h){
     $width = 640;
     $height = 'auto';
     $type = 'wfit';
   }else{
     $width = 'auto';
     $height = 640;
     $type = 'hfit';
   }
   $resize_image = $RI->disp_resize_img_path($resize_path, $width, $height, $type);
   //画像をリサイズしたら元の画像を削除
   $file = new File($old_path);
   $file->delete();
   ・・・

縦横のどちらかを640pxに合わせてリサイズするという方法です。

Resizeimg Classは保存されている画像をリサイズするので

一旦画像を保存して、

保存したものをリサイズしています。

あと、元々あった画像はいらないので削除しています。

リサイズされたファイル名は変わっているので

場合によってはファイル名を変更しても

いいかもしれません。

リサイズの設定の仕方は色々ありますので

本家サイトで確認してみてください。
Resizeimg Class(PHPクラス)

CakePHPには画像系のプラグインもあったのですが、

リサイズで理想的なものがなかったので

いつも移用しているResizeimg Classを使用しました。

ただ、このResizeimg Classはpngには対応していないようなのでご注意を!

スポンサードリンク