• ベストアンサー

文字化け

phpソースだけなら正しく表示できるのですが、 htmlソースを加えるとphpソースの部分が文字化けし、画像が表示できません。どうしてなのでしょうか? 画像を扱わないプログラムは、文字化けしないのですが、GDで画像を扱うと文字化けしてしまいます。 文字化けする↓ <html><head><title>sample</title></head> <?php $width=$_GET{'wid'}; $height=$_GET{'hei'}; $red=$_GET{'red'};$green=$_GET{'gre'};$blue=$_GET{'blu'}; $text=$_GET{'tex'};$size=$_GET{'siz'}; $red1=$_GET{'red1'};$green1=$_GET{'gre1'};$blue1=$_GET{'blu1'}; $angle=$_GET{'ang'};$x1=$_GET{'x1'};$y1=$_GET{'y1'}; header("Content-type: image/jpeg"); $im = imagecreate($width,$height); $bground = imagecolorallocate($im, $red,$green,$blue); $text_c = imagecolorallocate($im,$red1,$green1,$blue1); imagettftext($im, $size, -$angle,$x1,$y1, $text_c,"Century",$text); imagepng($im); ?> </form></body></html>

noname#13767
noname#13767
  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • umioyo
  • ベストアンサー率66% (35/53)
回答No.2

PHPの出力とHTMLの出力の文字コードが異なっているのでは。 HTML側で <meta http-equiv="Content-Type" content="text/html; charset=文字コード"> と、PHPの出力をあわせてやればいいんじゃないでしょうか。

noname#13767
質問者

お礼

文字コードが違いました。 ありがとうございます。勉強しますね。

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

pngで日本語textをはき出すときは、unicodeにしないといけません。 textは日本語じゃないですか? もしそうなら $text=mb_convert_encoding($_GET["tex"],"UTF-8","auto"); としてみてください。

noname#13767
質問者

お礼

ありがとうございます。 質問の書き方が足りなかったですね。 でも、参考になりました。

関連するQ&A

  • 文字色

    エキサイトブログで『文字サイズ』や『文字色』を変えられるじゃないですか。 あの『文字色』は何色あるんですかね…? 私が知ってるのは『red』『blue』『green』『pink』だけなんですけど…。 知ってる方、教えてください。。

  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP
  • 円グラフ

    PHPで円グラフを作成しています。 以下のサンプルをサイトで入手し動作を確認しました。このままでは色分けのみで何のデータか解りにくいので、データに何のデータであるかの文章を挿入したいのですが方法が解りません。解る方よろしくお願いします。 <?php header("Content-Type: image/png"); ?> <?php // 画像のサイズ $im = imagecreate(200,200); // キャンパスの大きさ $ix = 100; // 中心のx座標 $iy = 100; // 中心のy座標 $iw = 200; // 画像の横幅 $ih = 200; // 画像の縦幅 $rs = 270; // 開始角度(上:270) // データ $data[0] = 80; $data[1] = 50; $data[2] = 30; $data[3] = 20; $data[4] = 10; // 色の定義(データの数だけ必要) $white = imagecolorallocate($im,255,255,255); $red = imagecolorallocate($im,255,0,0); $yellow = imagecolorallocate($im,255,255,0); $lime = imagecolorallocate($im,0,255,0); $cyan = imagecolorallocate($im,0,255,255); $blue = imagecolorallocate($im,0,0,255); $cd = array($red,$yellow,$lime,$cyan,$blue); // 合計値の計算 $length = count($data); $m=0; for($i=0; $i<=$length; $i++) { $m += $data[$i]; } // 画像の描画 for($i=0; $i<$length; $i++) { $st = $rs; $rs += $data[$i] / $m * 360; if($rs >= 360) $rs -= 360; imagefilledarc($im,$ix,$iy,$iw,$ih,$st,$rs,$cd[$i],4); } imagepng($im); ?>

    • 締切済み
    • PHP
  • 画像に文字を入れて出力

    いつもお世話になってます。 phpで、画像に文字を入力して出力(画像として)したいのですが 画像を育成し、そこに文字を入力して画像として出力 というようなスクリプトは多く見つけられました(以下の通り) --- <?php Header("Content-type: image/gif"); $im = imagecreate(400,30); $black = ImageColorAllocate($im, 0,0,0); $white = ImageColorAllocate($im, 255,255,255); ImageTTFText($im, 20, 0, 10, 20, $white, "/path/arial.ttf", "Testing... Omega: Ω"); ImageGif($im); ImageDestroy($im); ?> --- 元々用意した画像に文字を入力して出力させる事は可能でしょうか?

    • ベストアンサー
    • PHP
  • 文字を画像として出力したい

    サイト上の情報などを頼りに、下記のようなコードを書きました。 <?php header("Content-Type: image/gif"); $size = 14; $text = "テスト"; $text = mb_convert_encoding($text, "UTF-8", "EUC"); $font = "/home/kymsweb/www/modx/assets/files/fonts/hgrsmp.ttf"; $bbox = ImageTTFBBox($size, 0, $font, $text); $h = $bbox[1] - $bbox[7] + 8; //縦 $w = $bbox[2] - $bbox[0] + 8; //横 $im = ImageCreate($w, $h); ImageColorAllocateAlpha($im, 155, 255, 255, 127); $chars = ImageColorAllocate($im, 155, 0, 255); ImageTTFText($im, $size, 0, 1, $h - 8, $chars, $font, $text); ImageGIF($im); ImageDestroy($im); exit; ?> これをそのままphpファイルとして保存し、サーバ上に転送し アクセスすると「テスト」という文字が画像として表示されます。 ここまでは分かったのですが。 これをさらに応用し、任意のhtmlファイル(正確には拡張子phpのファイルですが)の 中にこのコードを埋め込んで表示したいと考えていますが、当然ながら htmlソースにバイナリを同梱してしまうようなことはできません。 具体的には、CMSのプラグインを自前で作りたいと考えています。 たとえばタイトル画像を任意のフォントを使って画像として リアルタイムに書き出すような使い方です。 このような場合、どのような仕組みを考えるといいのか アドバイスをいただきたいです。

    • 締切済み
    • PHP
  • マルチバイト文字を画像に書き込みたい

    いつもお世話になっています。 画像に文字を書き込むプログラムを作成中なのですが、 日本語を書き込もうとすると文字化けを起こしてしまいます。 文字は、EUC-JPで処理するようにしています。 【index.php】にHTMLでフォームから値(文字列やフォントなど)をとり、 【a.php】で画像に文字を書き込む処理をし、 【index.php】で作成した画像を表示させるプログラムです。 マルチバイト文字を送信する際に、 $text=rawurlencode($text);  【index.php】 をし、【a.php】では、   $text=$_GET['text'];   $text=rawurldecode($text); をして、   imagettftext($im, $fontsize, 0, 12, $fontsize+8, $color, $font, $text); 書き込みを行っています。 マルチバイト文字を送信する際にこの方法が出来ない場合、他に方法があるのでしょうか?? 開発環境は、Windows XP、PHP5.2.5,Apache2.2です。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • file_get_contents()にて文字化け

    PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m

    • 締切済み
    • PHP
  • Dreamweaverでソースが文字化けしてしまいました。

    Dreamweaverでソースが文字化けしてしまいました。 メタタグが <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> になってたので、 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> に修正して、保存して終了したあとに、再度Dreamweaverで開いたところ、ソースが全部文字化けしてしまいました。 元に戻そうと、メタタグをもとのutf-8に戻しても直りません。 メタタグをShift_JISにして、ページプロパティのエンコーディングをShift_JISに合わせると、ソース全部が文字化けしていた状態は直ったんですが、ところどころ文字化け状態のままになっています。 完全にもとの状態に戻したいのですが、どうしたら文字化けが直るのでしょうか。 教えてください。 よろしくお願いします。

  • Ajax・jQueryでGET時にIEで文字化け

    Ajax・jQueryで日本語をGETするとき、IEで文字化けします。 (Firefox,chromeでは文字化けは起こりません。IE6/7/8で確認すると文字化けします) どのようにしたら文字化けが起こらなくなるか教えていただければと思います。 環境 PHP:5.1.6 サーバー・HTMLの文字コードはUTF-8 下記のようなリンクを作り、「jquery.url.js」でパラメータを取得しています。 <a href="./test.php?keyword=テスト&cate=1"> (実際には下記のソースに示しますが、テストの文字はurlencordしています。) 【javascript部分】 <script type="text/javascript" src="jquery.url.js"></script> <script type="text/javascript"> $().ready ( function() { $('#sample-get').find('a').click ( function() { var url = $.url ( $(this).attr('href') ); $.ajax ({ type: 'GET', url: 'send.php', cache: false, data: url.attr ( 'query' ), success: function ( data, dataType ) { $('#test').html ( data ); }, error: function ( XMLHttpRequest, textStatus, errorThrown ) { this; alert('Error : ' + errorThrown); } }); return false; }); 【HTML(PHP)部分】 $keyword='テスト'; $keyword=urlencord($keyword);//urlエンコード echo<<<EOF <div id="sample-get"> <a href="./test.php?keyword=$keyword&cate=1"><img src="images/sample1.png" alt="sample1" height="200" width="200"></a> </div> EOF; 【PHP部分(send.php)】 <?php echo $_GET['keyword']; echo urldecord($_GET['keyword']); echo $_GET['cate']; ?>

    • ベストアンサー
    • AJAX
  • PHP GDでテキストを含む最小の画像を作りたい

    PHP GDでテキストを描画し、画像の幅・高さがそれを含む最小になるように したいのです。 まずimageftbboxでバウンディングボックスを取得し、そのサイズにすればいいかと思い 以下のコードを書いてみましたが、うまくいきません。 <?php $fontSize = 20; $angle = 0; $fontFile = './msgothic.ttc'; // MSゴシック for ($code = ord('A'); $code <= ord('Z'); $code++) { $text = chr($code); $bbox = imageftbbox($fontSize, $angle, $fontFile, $text); $w = $bbox[2] - $bbox[0]; $h = $bbox[3] - $bbox[7]; var_dump($bbox); echo "w = $w h = $h\n"; $im = imagecreatetruecolor($w, $h); $backcolor = imagecolorallocate($im, 0x00, 0x00, 0x00); $forecolor = imagecolorallocate($im, 0xff, 0xff, 0xff); imagefill($im, 0, 0, $backcolor); $x = 0; $y = -$bbox[7]; echo "x = $x y = $y\n"; imagefttext($im, $fontSize, $angle, $x, $y, $forecolor, $fontFile, $text); imagegif($im, $text .'.gif'); } この場合、Iの右半分が切れてしまいます。 $xを調整すればいいのかと思い、$x = $bbox[0]などとしてみましたが、 どうやっても必ずどれかの文字の一部が切れてしまいました。 これを正しく描画するにはどのようにすればいいでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう