PHP 画像に文字を追加

このブログは画像をclickすると、javascriptで簡単設定イメージ画像拡大スクリプトでシャドーがかかり画像が拡大されるようにしてありますが、そこにおまけとして、画像にphpで[クリックすると拡大します]という文字列を描写するスクリプトをつくってみました。
本当はjavascriptで文字を重ねたかったけど、IEは問題ないが、FFの場合positionの指定でズレがでて修正できなかったのでやめました。

<?php
if($_SERVER["REMOTE_ADDR"] == "127.0.0.1"){$encode='utf-8';}else{$encode='euc-jp';}
$txt = mb_convert_encoding("[クリックすると拡大します]", $encode,"sjis");
if(isset($_SERVER['QUERY_STRING'])) {$jpeg = $_SERVER['QUERY_STRING'];}
$font = "/var/www/home/~/shop/font/brmislw0.ttf";//サーバーパスの方が間違いない
list($width, $height, $type, $attr) = getimagesize($jpeg);//画像サイズの収得
$image = imagecreatefromjpeg($jpeg);
$color = imagecolorallocate($image, 255,255,255);
$alpha = imagecolorallocatealpha($image, 0, 0, 0, 90);//透かしイメージ
imagefilledrectangle ($image , $width-147, $height-20, $width-3, $height-3, $alpha);
//imagefilledrectangle (画像ID ,左上x, 左y, 右下x, 右y, カラー);
imagettftext ($image, 8, 0, $width-144, $height-7, $color,$font,$txt);
imagettftext ($image, 8, 0, $width-144, $height-7, $color,$font,$txt);
//ImageTTFText(画像ID, 文字サイズ, アングル, X座標, y座標, 文字色, フォントのファイル,文字列);
header("Content-type: image/jpeg");
imageJPEG($image, null, 100);//最後の100は画質設定0~100
imagedestroy($image);
?>
呼び出しは <img alt=”” src=”http://~設置したプログラム名.php?呼び出す画像名”/>です。

 

  • any2eucjp(): something happen in~のエラーは日本語書き込み時のエラーなので、mb_convert_encodingの指定で直る(うちのサーバーの場合euc-jpでローカルサーバーの場合utf-8で変換されるのでテスト用に$_SERVER[“REMOTE_ADDR”]で振り分けています。)
  • imagettftextで2回書き込んであるのは、濃さを増すためです。
  • 直接アクセスしたときにエラーメッセージじゃなく文字の羅列になる場合は、Fontが日本語非対応か、指定場所の間違えでしょう。

“PHP 画像に文字を追加” への2件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください