$img = imagecreatefrompng("imori.png"); var_dump($img); imagedestroy($img); // 破棄
resource(3, gd)
$img = imagecreatefrompng("imori.png"); $sx = imagesx($img); // → 320 $sy = imagesy($img);// → 180 imagedestroy($img);
$img = imagecreatefrompng("imori.png"); // 楕円を描画 $col_ellipse = imagecolorallocate($img, 255, 255, 255); imageellipse($img, 200, 150, 300, 200, $col_ellipse); // 別名で保存 imagepng( $img, "imori2.png"); imagedestroy($img);
// 空の画像を作成する $img = imagecreatetruecolor(200, 160); // 楕円の色を選択しますRGB $col = imagecolorallocate($img, 44,168,108); imageellipse($img, 50, 50, 60, 60, $col); // 画像を出力します imagepng( $img, "sec1-4.png"); imagedestroy($img);
$img = imagecreatefrompng("toumei.png"); //ブレンドモードを無効にする imagealphablending($img, false); //完全なアルファチャネル情報を保存するフラグをonにする imagesavealpha($img, true); // 楕円を描画RGB $col = imagecolorallocate($img, 221,77,64); imageellipse($img, 50, 50, 60, 60, $col); // 別名で保存 imagepng( $img, "toumei2.png"); imagedestroy($img);
// 空の画像を作成する $img = imagecreatetruecolor(320, 240); // 背景を透明にする imagecolortransparent($img, imagecolorallocate($img, 0, 0, 0)); // 画像ファイル名群 $imgFns = array('toumei1.png','toumei2.png','toumei3.png','toumei4.png'); // シンプルな画像合成 foreach($imgFns as $fn){ $img2 = imagecreatefrompng($fn); // 合成する画像を取り込む // 合成する画像のサイズを取得 $sx = imagesx($img2); $sy = imagesy($img2); imageLayerEffect($img, IMG_EFFECT_ALPHABLEND);// 合成する際、透過を考慮する imagecopy($img, $img2, 0, 0, 0, 0, $sx, $sy); // 合成する imagedestroy($img2); // 破棄 } // 別名で保存 imagepng( $img, "combine.png"); imagedestroy($img);
imagecopyresampled($img, $img2, コピー位置X, コピー位置Y,0, 0,拡縮サイズX, 拡縮サイズY,コピー元サイズX,コピー元サイズY);
引数 | 説明 |
---|---|
$img | コピー先、またはベース画像の画像リソースID。 |
$img2 | コピー元、つまり別画像の画像リソースID。 |
コピー位置X, コピー位置Y | コピー先でのコピー元画像の位置。 |
0,0 | コピー元画像上における座標を示す。基本的に0でよい。 |
拡縮サイズX,拡縮サイズY | 拡大または縮小したときの画像幅を指定する。 |
コピー元サイズX,コピー元サイズY | コピー元画像の幅。 |
サンプルコード
<?php
$back_img_fp = "imori.jpg"; // 背景画像ファイルパス
$res_img_fp = "test.png"; // 合成結果画像ファイルパス
$text = "Hello!¥nシリケンイモリ¥n" . time(); // 重ねて合成表示する文字列
$size = 32; // 文字列のサイズ
$angle = 0; // 文字列の角度
// 挿入位置
$x = 8; // 文字列の位置:左上座標
$y = 8 + $size; // 文字列の位置:左上座標
$image = imagecreatefromjpeg($back_img_fp);// 画像リソース IDを取得(失敗時はfalse)
if(empty($image)){
echo '画像取得に失敗しました。' . $back_img_fp . '<br>';
die();
}
$color = imagecolorallocate($image, 255, 255, 255); // 文字列の色(int型:色ID)
$fontfile = "ipaexm.ttf"; // 文字列フォントの指定
// Windows環境用の文字列フォント設定
if(PHP_OS == 'WINNT' ){
$fontfile = "C:¥Windows¥Fonts¥meiryo.ttc";
}
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text); // 文字列を画像に重ねて合成
imagepng($image, $res_img_fp); // png形式で画像を出力
?>
<img src="<?php echo $res_img_fp; ?>?t=<?php echo time(); ?>" /><br>
出力画像
<?php
$img = imagecreatetruecolor(240, 160);
$color = imagecolorallocate($img, 250, 50, 50); // 塗りつぶし色
imagefill ($img ,0 , 0 , $color );
// 画像を出力します
imagepng( $img, "test.png");
imagedestroy($img);
$t = time();
echo "<img src='test.png?t={$t}' />";
?>
出力画像
<?php
$back_img_fp = "imori.jpg"; // 背景画像ファイルパス
$size = 32; // 文字列のサイズ
$angle = 0; // 文字列の角度
$text = "シリケンイモリ"; // 重ねて合成表示する文字列
$fontfile = "ipaexm.ttf"; // 文字列フォントの指定
// Windows環境用の文字列フォント設定
if(PHP_OS == 'WINNT' ){
$fontfile = "C:¥Windows¥Fonts¥meiryo.ttc";
}
$image = imagecreatefromjpeg($back_img_fp);// 画像リソース IDを取得(失敗時はfalse)
$info = imagettfbbox ( $size, $angle, $fontfile, $text );
echo "<table class='table'>";
foreach($info as $i => $v){
echo "<tr><td>{$i}</td><td>{$v}</td></tr>";
}
echo '</table>';
$color = imagecolorallocate($image, 255, 255, 255); // 文字列の色(int型:色ID)
// 挿入位置
$x = 8; // 文字列の位置:左上座標
$y = 8 + $size; // 文字列の位置:左上座標
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text); // 文字列を画像に重ねて合成
imagepng($image, 'test.png'); // png形式で画像を出力
?>
<img src="test.png?t=<?php echo time(); ?>" /><br>
インデックス | 値 | 説明 |
---|---|---|
0 | 3 | 左下X |
1 | 2 | 左下Y |
2 | 294 | 右下X |
3 | 2 | 右下Y |
4 | 294 | 右上X |
5 | -35 | 右上Y |
6 | 3 | 左上X |
7 | -35 | 左上Y |