
前回、画像をアップロードしてみましたが、
画像をアップロードした時に
リサイズをしてくれるものがあると便利なので
簡単にリサイズしてくれる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には対応していないようなのでご注意を!
