# 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_libraryimagemagick 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左右反転
2022-03-15

同じタグを持つ記事をピックアップしました。