//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//新規イメージオブジェクトの生成
$base_img = imagecreatefromjpeg('https://yt3.ggpht.com/-QsbVHJovyOM/AAAAAAAAAAI/AAAAAAAAAAA/0fttNKee47I/s48-c-k-no-mo-rj-c0xffffff/photo.jpg');
$mask_img = imagecreatefrompng('mask.png');
//アルファブレンディングフラグを設定(どうゆうこと?)
imagelayereffect($base_img, IMG_EFFECT_OVERLAY);
//アルファチャンネルを有効にする
imagesavealpha($base_img,true);
//カラー情報を付与
$white = imagecolorallocate($mask_img, 255, 255, 255);
imagecolortransparent($mask_img, $white);
//座標を取得してマスク画像をかぶせる
$src_w = imagesx($mask_img);
$src_h = imagesy($mask_img);
imagecopy($base_img,$mask_img,0,0,0,0,$src_w,$src_h);
//書き出し
imagepng($base_img);
imagedestroy($mask_img);
imagedestroy($base_img);
GDで透かしを追加
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//画像の読み込み
$dest = imagecreatefrompng('sample.png');
$src = imagecreatefrompng('watermark.png');
//元画像の幅と高さを取得
$dest_w = imagesx($dest);
$dest_h = imagesy($dest);
//透かしの幅と高さを取得
$src_w = imagesx($src);
$src_h = imagesx($src);
//透かしを表示する座標(画像の真ん中)
$dest_x = $dest_w/2-$src_w/2;
$dest_y = $dest_h/2-$src_h/2;
//画像を合成
//(画像リンク,透かしリンク,x座標,y座標,透かしx座標,透かしy座標,画像の幅,高さ,アルファ)
imagecopymerge($dest,$src,$dest_x,$dest_y,0,0,$src_w,$src_h,4);
//書き出し
imagepng($dest);
参考にしたサイト
- http://www.phppro.jp/phpmanual/php/function.imagecopymerge.html
- http://symfoware.blog68.fc2.com/blog-entry-861.html
- http://php.net/manual/ja/function.imagecopymerge.php
画像に文字(テキスト)を書き込む
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//新規イメージオブジェクトの生成
$img = imagecreate(300, 300);
//カラー情報を付与
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
//表示するテキストを用意
$text = mb_convert_encoding('Hello world!','UTF-8','auto');
//ttfファイルへのリンク(要ttfファイル)
$font = 'ipagp.ttf';
//リソース、フォントサイズ、アングル(回転)、x座標、y座標(フォントペースライン)、フォント、テキスト
imagettftext($img,24,0,5,30,$black,$font,$text);
//書き出し
imagepng($img);
※一番最初にコールしたimagecolorallocateが自動で背景色にセットされる
画像の回転
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//外部から画像の読み込み
$img = imagecreatefrompng('sample.png');
//背景色を指定
$color = imagecolorallocate($img, 0, 0, 0);
//画像を回転(リソース、角度、背景色)
$newimg = imagerotate($img, 45, $color);
//書き出し
imagepng($newimg);
GDでサムネイルを作る(画像の拡大と縮小)
画像の拡大と縮小
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//外部から画像の読み込み
$img = imagecreatefrompng('sample03.png');
//読み込んだ画像の幅と高さを取得する
$width = imagesx($img);
$height = imagesy($img);
//新規イメージオブジェクトの作成
$out = imagecreatetruecolor($width/2, $height/2);
//リサンプリング処理。コピー元、コピー先、座標、コピー先の幅、コピー先の高さ、コピー元の幅、コピー元の高さ
imagecopyresampled($out, $img,0,0,0,0, $width/2, $height/2, $width, $height);
//書き出し
imagepng($out);
※imagecreatetruecolorはimagecreate の強化版
- 参考にしたサイト
- http://www.geekpage.jp/web/php-gd/resize1.php
- http://phpspot.net/php/man/php/function.imagecopyresampled.html
GD グラフィック ライブラリ
画像の生成
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//新規イメージオブジェクトの生成
$img = imagecreate(200, 200);
//カラー情報を付与(対象、R、G、B)
imagecolorallocate($img, 255, 0, 0);
//書き出し
imagepng($img);
※imagecreateで扱えるのは256色まで、TrueColorイメージを扱いたい場合はimagecreatetruecolorを使う。
外部から画像の読み込み
//ヘッダーでimg画像であることを宣言
header("Content-Type: image/png");
//外部から画像の読み込み
$img = imagecreatefrompng('sample02.png');
//書き出し
imagepng($img);
- 参考にしたサイト
- http://www.geekpage.jp/web/php-gd/imagefilledrectangle.php
- http://phpspot.net/php/man/php/function.imagecolorallocate.html
- http://ponk.jp/php/gd/kihon
- http://www43.atpages.jp/opicon69/libgd/