透過PNGで画像をマスクする


 //ヘッダーで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/