# Codeigniter 画像アップロードとリサイズ
public function img_upload()
{
// アップロード設定
$config = [
'upload_path' => './img/',
'allowed_types' => 'gif|jpg|png',
'file_ext_tolower' => true,
'max_size' => 0,
'overwrite' => true,
];
// アップロード初期化
$this->load->library('upload', $config);
// アップロード
if (!$this->upload->do_upload('img_file')) {
$error = array('error' => $this->upload->display_errors());
return $this->json(['result' => false, $error]);
} else {
$data = $this->upload->data();
// リサイズ設定
$img_config = [
'source_image' => $data['full_path'],
'width' => 500
];
// リサイズ初期化
$this->load->library('image_lib', $img_config);
$this->image_lib->resize();
return $this->json(['result' => true, $data]);
}
}
# upload library
# 設定項目
| 設定項目 | 初期値 | 型 | 説明 |
|---|---|---|---|
| upload_path | String | アップロード保存先パス | |
| allowed_types | String | アップロード許可するタイプ | |
| file_name | String | ファイルリネーム指定 | |
| file_ext_tolower | FALSE | Boolean | 拡張子小文字に変更 |
| overwrite | FALSE | Boolean | 上書き保存 |
| max_size | 0 | Number | サイズ最大値 KB 単位 php.ini 依存 ゼロ無制限 |
| max_width | 0 | Number | 幅最大値ピクセル単位 ゼロ無制限 |
| max_height | 0 | Number | 高さ最大値ピクセル単位 ゼロ無制限 |
| min_width | 0 | Number | 幅最小値ピクセル単位 ゼロ無制限 |
| min_height | 0 | Number | 高さ最小値ピクセル単位 ゼロ無制限 |
| max_filename | 0 | Number | ファイル名長さ最大値 ゼロ無制限 |
| max_filename_increment | 100 | Number | overwrite オプションFALSEの場合 インクリメント最大番号 |
| encrypt_name | FALSE | Boolean | ランダムファイル名生成 |
| remove_spaces | TRUE | Boolean | ファイル名にあるスペース削除 |
# クラスリファレンス
initialize([array $config = array()[, $reset = TRUE]])- 返り値 CI_Upload インスタンス
do_upload([$field = 'userfile'])- 返り値 Boolean
display_errors([$open = '<p>'[, $close = '</p>']])- 返り値 String
data([$index = NULL])- 返り値 Array
# data クラス
アップロードファイル情報
$data = $this->upload->data();
特定のアップロードファイル情報
$full_path = $this->upload->data('full_path');
Array
(
[file_name] => img_file.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => img_file
[orig_name] => img_file.jpg
[client_name] => img_file.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)
# image library
Codeigniter は画像の処理するライブラリがあるため 画像のリサイズ サムネイル 切り抜き 合成処理ができます。
このライブラリはGD/GD2 NetPBM ImageMagick をサポートしています。
イメージライブラリができること
- 画像のリサイズ
- サムネイルの作成
- 画像の切り抜き
- 画像の回転
- 画像の合成
# config 設定
すべての操作項目で共通する基本設定と各操作別で使う設定があります。
- 画像のリサイズ
- サムネイルの作成
- 画像の切り抜き
- 画像の回転
- 画像の合成
# 基本設定
リサイズ サムネイル 切り抜き 回転 合成操作の共通設定
| 設定項目 | デフォルト | 説明 |
|---|---|---|
| image_library | gd2 | gd gd2 imagemagick netpbm のいずれかを指定 |
| library_path | image_libraryがimagemagick netpbmの場合 /usr/binなどパス指定 | |
| dynamic_output | FALSE | 処理結果保存せずに出力 |
| source_image | 処理する元画像のファイルパス | |
| new_image | 処理後に保存する画像ファイルパス |
# 画像のリサイズ・サムネイルの作成 resize()
元の画像から、高さ・横幅をリサイズ
| 設定項目 | デフォルト | 説明 |
|---|---|---|
| width | 画像横幅(ピクセル)を指定 | |
| height | 画像高さ(ピクセル)を指定 | |
| quality | 90 | 画像の圧縮率を0 - 100指定 |
| create_thumb | FALSE | サムネイルとしてリサイズ |
| thumb_marker | _thumb | サムネイル画像のファイル名につける文字列 |
| maintain_ratio | TRUE | 画像の縦横比を維持 |
# 画像の切り抜き crop()
画像を切り抜き
| 設定項目 | デフォルト | 説明 |
|---|---|---|
| width | 画像横幅(ピクセル)を指定 | |
| height | 画像高さ(ピクセル)を指定 | |
| x_axis | 切り取る画像の X 座標(左から)の始点ピクセル | |
| y_axis | 切り取る画像の Y 座標(上から)の始点ピクセル | |
| maintain_ratio | TRUE | 画像の縦横比を維持 |
# 画像の回転
画像を回転、反転
| 設定項目 | デフォルト | 説明 |
|---|---|---|
| rotation_angle | 90 180 270 vrt上下反転 hor左右反転 |