Skip to content
No description or website provided.
PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
controllers
models/behaviors
README
simple_image_app_controller.php
simple_image_app_model.php

README

== Simple Image Pluginとは ==
Simple Image Pluginは画像のアップロード処理を補助します。
テキストデータを保存する時と同じようにModel::saveを実行するだけで、画像ファイルがドライブに保存されます。
ControllerやComponentでファイル操作処理を書く必要はなくなります。
また、保存時にリサイズやサムネイルの生成、サイズの異なる複数のバージョンを用意することもできます。
モデルからデータ取得時に保存した画像へのURLがデータにセットされます。

== バージョンと更新履歴 ==
Current version:0.1

2010-10-14: Ver 0.1 released

== 機能一覧 ==
・画像ファイルの保存
・保存時のバリデーションチェック
・画像のリサイズ
・サムネイル画像の生成・保存
・サイズの異なる複数のバージョンの生成・保存
・ファイルの保存先の指定、自動出力

== 使い方 ==
== 初期設定 ==
(1)画像ファイルを扱いたいモデルに画像用の名前のカラムを1つ用意します。(例えばUser.image)
(2)そのモデルのactsAsオプションでSimpleImage.Imageビヘイビアを読み込みます。
(3)ビヘイビアで各種設定を行います

== シンプルな使い方 ==
Userモデルのimageカラムを画像用とし、
webroot/img/以下に画像ファイルを保存する場合は以下のように実装できます。

-- Model
fieldsオプションに用意した画像用カラムの名前を指定します。
その中にリサイズ、サムネイル画像等の設定を書いていきます。

class User extends AppModel {
	var $name = 'User';
	var $displayField = 'name';
	
		var $actsAs = array(
		'SimpleImage.Image'=>array(
			'fields'=>array(
				'image'=>array(
					'allowed_file_type' => array('gif', 'jpg', 'png'),
					'max_file_size' => 1048576,
					'required' => true,
					'thumbnail'=>array(
						'create'=>true,
						'width' => '110',
						'height'=>'83',
						'aspect'=>true,
						'allow_enlarge'=>true,
					),
					'resize'=> array(
						'create'=>true,
						'width' => '640',
						'height'=>'480',
						'aspect'=>true,
						'allow_enlarge'=>false,
					),
					'versions'=>array(
						array(
							'prefix'=>'small',
							'width'=>'320',
							'height'=>'240',
							'aspect'=>true,
							'allow_enlarge'=>true,
						),
						array(
							'prefix'=>'medium',
							'width'=>'480',
							'height'=>'360',
							'aspect'=>true,
							'allow_enlarge'=>true,
						),
						array(
							'prefix'=>'large',
							'width'=>'1024',
							'height'=>'768',
							'aspect'=>true,
							'allow_enlarge'=>true,
						),
					),
				),
			),
		)
	);
}

-- Controller
コントローラに何か特別な処理を書く必要はありません。
いつものようにモデルにデータを保存する処理を書いてください。
もし画像ファイルのアップロードを一時的に必須にしたくない場合は、
保存前に$this->User->imageRequired(false);と書いてください。

class UsersController extends AppController {
	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid user', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			$this->User->imageRequired(false);//Image file uploading is not required
			if ($this->User->save($this->data)) {
				$this->Session->setFlash(__('The user has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->User->read(null, $id);
		}
	}
?>

-- View
ビューに何か特別な処理を書く必要はありません。
ファイルアップロードフォームを用意してください。
ユーザー追加画面であればこのようにします。
<?php echo $this->Form->create('User', array('enctype'=>'multipart/form-data'));?>
	<fieldset>
 		<legend><?php __('Add User'); ?></legend>
	<?php
		echo $this->Form->input('name');
		echo $this->Form->input('password');
		echo $this->Form->input('image', array('type' => 'file'));
	?>
	</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>

== 応用した使い方(保存先をwebroot/img以外にする方法) ==
これは、何らかの理由で画像をwebroot/imgに保存したくない場合(多くは認証済みユーザー以外に見せたくない場合など)に役立ちます。
SimpleImage.ImageBehaviorの設定
(1)baseDirオプションに保存先ディレクトリの絶対パスを指定してください。
  var $actsAs = array(
    'SimpleImage.Image'=>array(
      'baseDir' => DS.'foo'.DS.'bar', //(オプション)保存先を指定します。絶対パスを指定するかIMAGE以下のフォルダ名を指定します。

以上で、任意の場所に画像ファイルを保存する準備は整いました。
デフォルトではSimpleImageプラグインに含まれるImagesControllerが保存先ディレクトリから画像を読み込んで出力します。
URLの例:/images/index/User/1/image/thumb
出力するコントローラを変更したい場合は、(2)及び(3)の設定を行ってください。

(2)オプション:画像出力のコントローラを、outputUrlBaseオプションに定義してください。
outputUrlBaseはURLを出力する時と同様に配列で指定してください。
設定例:
'outputUrlBase' => array(
	'controller' => 'foo'
	'action' => 'bar'
)
デフォルトはSimpleImage.ImagesControllerが画像ファイルを出力します。

画像出力コントローラのアクションでは、以下のようにパラメータを受け取る必要があります。
function some_action($modelName = null, $id = null, $field = null, $prefix){

== 各種オプションの説明 ==

-- 全体オプション
baseDir:保存先のディレクトリを指定します。絶対パスまたはIMAGE以下のフォルダ名を指定します。初期値はIMAGE/uploadsです。
outputUrlBase:画像出力コントローラとアクションを指定します。初期値は、images/indexです。

-- Fieldオプション
allowed_file_type:許可する画像ファイルタイプを指定します。3文字の拡張子を配列で指定します。未指定の場合はファイルタイプのチェックは行われません。初期値は空です。
max_file_size:最大ファイルサイズをバイトで指定します。初期値は1MBです。
required:画像ファイルのアップロードを必須にするかどうかを指定します。

thumb:サムネイル生成のオプションです。
thumb/create:サムネイル画像の生成有無をBool値で指定します。初期値はfalseです。作成されません。
thumb/width:リサイズの横幅を指定します。初期値は100です。
thumb/height:リサイズの縦幅を指定します。初期値は100です。
thumb/aspect:リサイズ時にアスペクト比を保つかどうか指定します。trueの場合、縦幅か横幅のどちらか大きい方を基準にアスペクト比が維持されます。初期値はtrueです。
thumb/enlarge:画像が指定サイズより小さい場合に拡大するかどうか指定します。初期値はfalseです。

resize:オリジナル画像のリサイズオプションです。初期値はnullです。リサイズされません。
resize/create:サムネイル画像の生成有無をBool値で指定します。
resize/width:リサイズの横幅を指定します。
resize/height:リサイズの縦幅を指定します。
resize/aspect:リサイズ時にアスペクト比を保つかどうか指定します。trueの場合、縦幅か横幅のどちらか大きい方を基準にアスペクト比が維持されます。初期値はtrueです。
resize/enlarge:画像が指定サイズより小さい場合に拡大するかどうか指定します。初期値はfalseです。

versions:異なるサイズのコピーを複数バージョン用意したい場合に指定します。初期値はnullです。作成されません。
versions/$versionName/width:リサイズの横幅を指定します。
versions/$versionName/height:リサイズの縦幅を指定します。
versions/$versionName/aspect:リサイズ時にアスペクト比を保つかどうか指定します。trueの場合、縦幅か横幅のどちらか大きい方を基準にアスペクト比が維持されます。初期値はtrueです。
versions/$versionName/enlarge:画像が指定サイズより小さい場合に拡大するかどうか指定します。初期値はfalseです。
Something went wrong with that request. Please try again.