[GD]png 画像の透過・リサイズ

2011/08/11
久々に PHP ネタ。 GD で png 画像を透過、リサイズしてみる。

サンプル

    function resize_image($org_path, $new_path, $to_width, $to_height) {
        list($org_width , $org_height) = getimagesize($org_image_path);
        $src_image = imagecreatefrompng($org_path);

        $rate = 1;
        if ($org_width > $org_height) {
            $rate = $to_width / $org_width;
        } elseif ($org_width < $org_height) {
            $rate = $to_height / $org_height;
        } else {
            if ($to_width > $to_height) {
                $rate = $to_height / $org_height;
            } else {
                $rate = $to_width / $org_width;
            }
        }
        $to_width = $rate * $org_width;
        $to_height = $rate * $org_height;

        // 再サンプル
        $new_image = imagecreatetruecolor($to_width, $to_height);
        imagealphablending($new_image, false);
        imagesavealpha($new_image, true);

        imagecopyresampled($new_image, $src_image, 0, 0, 0, 0, $to_width, $to_height, $org_width, $org_height);

        imagepng($new_image, $new_image_path);

        imagedestroy($src_image);
        imagedestroy($new_image);
    }
png 透過の手順は、 (1) imagecreatetruecolor() で画像作成 (2) imagealphablending(), imagesavealpha() でアルファチャンネルの作成 (3) imagepng() で画像の書き出し リサイズの手順は (1) getimagesize() で取得したサイズ配列から (2) 比率を計算(サンプルの計算はちょっとあやしいかも) (3) imagecopyresampled() でリサンプリング
フォーム有効期限切れで Page Expired をリダイレクト
ログを日付でローテーションやクリアや削除
Homebrew で PHP8.0 から PHP7.4 にダウングレード
Big sur で zsh 移行と Homebrew アップグレード
Mac に minikube をインストール
途中から .gitignore に追加する
Larevel 6.x から Laravel 8.x にバージョンアップ
Composer で Allowed memory size (メモリ不足)エラー
Blade でカスタムクラスを利用する
git push git pull にブランチ指定せずに実行する
git pull や git push できなくなったとき
Docker のコンテナからホストOS に接続
Mac で ローカル IP アドレス(ipv4)のみを表示する
ホストOS から Docker の MySQLコンテナに接続
caching_sha2_password のエラー
node-config で環境設定ファイルを利用する
rootパスワードを初期化(再設定)する
Git から clone したときのエラー対処
Mac に MySQL をインストール
Mac に PostgreSQL をインストール
Laravel 環境構築 - Mac ネイティブ編
Firebase 入門 - Firebase とは
Firebase 入門 - CLI インストールとデータベースの設定
AWS 無料枠(t2.micro)で容量とメモリエラー
Cloud9 を起動する -初心者編-
gcloud で GCEインスタンスを起動してみる
AWS CLI と jq でインスタンス一覧を整形して表示
React と Laravel7 のプロジェクトを作成する
Homebrewインストール-2020年版
3直線で囲まれた範囲塗りつぶし
PuLP で線形最適化問題を解く
カスタムのペジネーションを作る
node-sass を使って sass をコンパイルする
Log ファサードでSQLログを分離して書き出す
いちから始める Docker - 複数のコンテナを使う - (2020年)
いちから始める Docker - docker-compose を使う - (2020年)
AWS ECR を使ってみる
Laravel7 でマルチ認証
Mac に AWS Client を設定する
Laravel7 リリース
v-html でHTML表示する
Laravel で Nuxt.js を使ってみる(Docker環境)
Laravel で Vue コンポーネントを使う
いちから始める Docker -コンテナをビルド- (2020年)
いちから始める Docker -起動してみる- (2020年)
Mac で MySQL(8系)
composer で vendor がインストールできない
Eloquent の日付を Carbon で扱う
webpack 4 入門(npm編)
[Mac]容量を減らす