スポンサードリンク

前回、画像をアップロードしてみましたが、
画像をアップロードした時に
リサイズをしてくれるものがあると便利なので
簡単にリサイズしてくれるResizeimg Classを
実装してみました。
スポンサードリンク
Resizeimg Classをダウンロード
Resizeimg Class(PHPクラス)
本家のサイトへ行って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には対応していないようなのでご注意を!
スポンサードリンク