# 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
  • php
  • codeigniter

関連記事

Laravel でカテゴリー作成 テーブル構築と再帰クエリ
Laravel を API サーバーとしての初期設定
Laravel リクエストログ出力
Carbon で php date 日付の日数・月数差を計算
Laravel 429 Too Many Requests
Laravel Email バリデーションについて
Laravel Sanctum 使って API トークン JWT 認証と SPA 認証
Laravel logger でエラーログを chatwork に自動送信
php CSV データ取得は fgetcsv 使う
Laravel tinker 使って DB データベース接続とコマンド
Laravel Test についてのメモ
Laravel Log の基本設定&使い方
Exception: Class 'ZipArchive' not found
Laravel Sail で Docker 環境構築
PHP 文字列長さ・文字列の幅を取得方法
Laravel Lumen Faker 日本語設定
laravel method の基本 get post put options
Laravel schedule 設定
Class 'Imagick' not found Error
Laravel eloquent model の規約
PHP mbconvertkana 全角半角英数カナ変換
Codeigniter APPPATH BASEPATH FCPATH 各種パスと URL 取得
Laravel timestamp() auto update 有効化無効化
Lumen8 で JWT ユーザー認証
Laravel toSql パラメータ付きで出力
Lumen8 で API 開発
php Exception エラーキャッチでメール送信
Smarty HTTP URL 取得できるサーバー関数
Laravel blade foreach loop と current url
laravel session を制する
PHP empty isset is_null の違い
PHP 8 リリース新機能と変更
FlattenException deprecated
php.ini 初期設定のいろいろ
Laravel 5.1 から 8.1 にバージョンアップ
PHP 7.4 にアップグレードして使えなくなる機能
開発時によく使うゼロ埋めパディング作業まとめ
解決!phpMyAdmin テーブル構造の内容が表示されない問題
codeigniter email ライブラリでメール送信 日本語対応
Composer コマンドとオプション
爆速軽量フレームワーク codeigniter PHP 開発
nuxtjs と codeigniter で jwt システム構築
Lumen と Laravel 違い比較
HTML から PDF に変換 PHP ライブラリ mPDF の設定
twig 3 人気 PHP テンプレートエンジンがバージョンアップ
正規表現一覧 よく使う検索・置換のパターン
Apache 初期設定メモ
開発におけるコーディングルール・規約
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定
php curl 使って クリックなしで POST 送信
allowurlinclude の設定で ftp_connect()エラー