• 締切済み

ImageStringで日本語表示させたい

PHP5でGD系の関数で日本語表示させたいのですが、以下の点で困っています。 英語や数値は普通に表示されますが、「パソコン表示」など日本語は文字化けみたいになります。 php.iniでmbstring.encoding_translation = Offとしています。 PHPのソースはutf8n+LFです。 どうしたら正しく日本語が表示できるのでしょうか? $img = ImageCreateFromPng("sample.png"); $str = "パソコン表示"; $str_col = ImageColorAllocate($img, 0, 0, 0); ImageString($img, 5, 10, 10, $str, $str_col); // 文字 // PNG画像としてmimeタイプ出力 header("Content-type: image/png"); Imagepng($img); Imagedestroy ($img);

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

みんなの回答

noname#94983
noname#94983
回答No.2

日本語の場合、ImageStringでなく、imagettftextを使ってTrueTypeフォントの文字を利用して描画するのが基本。以下を参照。 http://jp.php.net/manual/ja/function.imagettftext.php

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

参考になるかもしれません。 http://kommy.s254.xrea.com/samples_php/gd/

関連するQ&A

  • GD(php)での image関数 イメージ関数でブラウザ出力が出来ない

    下記ソースのimage.phpというファイルを作りました。 直接http://url/image.phpでアクセスすると画像が表示されません。 <? header("Content-Type: image/png"); $image = imagecreate(120,120); $black = imagecolorallocate($image,0,0,128); $yellow = imagecolorallocate($image,255,255,0); imageline($image,10, 60, 110, 60, $yellow); imagepng($image); imagedestroy($image); ?> imagepng($image);を imagepng($image,"test.png"); に変えたら、正しく同フォルダーにtest.pngが出力され、こちらは問題ないファイルとなっています。今回の処理ではphpを画像ファイルとして扱いたいのですが、 このケースで考えられる原因教えてください。 参考までにtest.htmlに <html><head><title>test</title> <img src="image.php"></body></html> と書いても結果は同じく画像表示が出来ませんでした。 <html><head><title>test</title> <img src="test.png"></body></html> では表示出来ます。

    • 締切済み
    • PHP
  • PHPのアニュアル17章をみて

    x.phpを <?php Header("Content-type:image/png"); $string=implode($argv," ");//変更場所 $im=imageCreateFromPng("x.png"); $orange=ImageColorAllocate($im,220,210, 60); $px=(imagesx($im)-7.5*strlen($string))/2; ImageString($im,3,$px,9,$string,$orange); ImagePng($im); ImageDestroy($im); ?> としx.htmlを <html><body> <img src="x.php?text"/> </body></html> とし画像x.pngとx.htmlとx.phpを /var/www/html/において 外部のPCからブラウザでx.htmlを呼び出したのですが絵が出ません $string=implode($argv," ");//変更場所 を $string="text"; に変更すれば絵が出ます このままでは引数を引き渡すことができません どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで行う最速の画像合成を教えて下さい。

    PHPを使用して、画質をあまり落とさず、1秒以下の処理時間で23個の画像を合成する方法(ロジック)を教えて下さい。 画像の合成をPHPで下記のソースのように組みましたが、横1120×縦2016のPNGファイル(容量は1ファイル当たり約 6.6KB~140KB)を23個合成して一つのファイルにする処理が終了すると、結果として合成された画質はキレイ(10段階中10の画質)ですが、処理時間が5.5秒程かかります。 そこで、合成素材の23個のファイルを全て半分の大きさ横560×縦1008にすると、結果として合成された画像の画質は結構落ちました(10段階中6の画質)が、処理時間は2.5秒程で終わりました。 希望としては、画質をあまり落としたくないので、小さくても横560×縦1008の画像を23個合成して処理時間を1秒以下にしたいのですが、以下のソースのやり方よりも処理が早く終わる やり方をご存知の方はいませんか? ご存知の方は、ご教授願います。 ちなみに、画像の種類は、使用できる色の種類が多いPNG形式で1秒以下の処理時間を実現したいです。 宜しくお願い致しますm(__)m ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3 //23個のファイルをロード $img1 = imagecreatefrompng(一個目のファイル); $img2 = imagecreatefrompng(二個目のファイル); ~ $img23 = imagecreatefrompng(23個目のファイル); //(白)の色を作成 $white1 = imagecolorallocate($img1, 255, 255, 255); $white2 = imagecolorallocate($img2, 255, 255, 255); ~ $white23 = imagecolorallocate($img23, 255, 255, 255); //白色を透過色へ imagecolortransparent($img1, $white1); imagecolortransparent($img2, $white2); ~ imagecolortransparent($img23, $white23); //それらをひとつの画像に統合($img1を背景とすると。) imagecopymerge($img1, $img2, 0, 0, 0, 0, 1120, 2016, 100); imagecopymerge($img1, $img3, 0, 0, 0, 0, 1120, 2016, 100); ~ imagecopymerge($img1, $img23, 0, 0, 0, 0, 1120, 2016, 100); //マージした後いらなくなった画像リソースをとりあえず解放 imagedestroy($img2); ~ imagedestroy($img23); imagepng($img1,出力ファイル名); imagedestroy($img1);

    • ベストアンサー
    • PHP
  • レンタルサーバでPHPを動かす時

    http://tok2.com/というところで PHP(バージョン5)を動かそうとしています。 レンタルサーバで、PHPがつかえるということは Apacheや、PHPのインストールはいらず エディタなどで、test.phpなどファイルを作って サーバにあげるだけでいいのでしょうか? 単純な文字の表示などは、できるのですが 画像の生成をして表示など、できないことが多々あります。 プログラムの内容は、サンプルをそのままコピーして いるので間違ってはないと思うのですが・・・ 何か、ほかに必要なことがありましたら 教えていただけませんか? 画像の表示の内容は下記になります。 <?php header("content-type: image/png"); $image = imagecreate(100,100); $back = imagecolorallocate($image, 0, 0, 0); $red = imagecolorallocate($image, 255, 0, 0) imagepolygon( $image, array( 10, 80, 80,80, 80, 10 ), 3, $red ); imagepng($image); imagedestroy($image); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで画像縮小

    質問します。自分は今PHPで画像の縮小をしようと思っています。 しかしうまくいきません。 コードは <htm> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>画像縮小</title> </head> <body> <?php $size = getimagesize("dl_button.png"); $image_in = imagecreatefrompng("dl_button.png"); $image_out = imagecreate( 90, 90 ); imagecopyresized( $image_out, $image_in, 0, 0, 0, 0, 90, 90, $size[ 0 ], $size[ 1 ] ); imagepng($image_out,"small.png"); imagedestroy( $image_in ); imagedestroy( $image_out ); ?> <img src = "dl_button.png" border = "0"> <img src = "small.png" border = "0"> </body> </html> となっています。 今のままだとエラーが出て、 「small.pngが見あたらない」と言われてしまいます。 ディレクトリは index.phpとdl_button.pngが同じ場所にあります。

    • ベストアンサー
    • PHP
  • こんばんわ

    こんばんわ 今とても困っています。 その内容は、 「PHPのGDを使って透過PNGを減色させる」といった処理なのですが、 減色関数?のimageTrueColorToPalette()を使って処理を行っても、透過が 保持されず、添付画像のようになってしまいます。 作成したコードは以下になります。 $pngimg="./ff-logo-big.png"; $resource = imageCreateFromPng($pngimg); echo "<img src = './befor.png'><br>"; imagetruecolortopalette($resource,false,255); imagepng($resource , "./after.png"); imagedestroy($resource); echo "<img src = './after.png'><br>"; どうすれば透過を保持したまま減色する事ができるのか、教えて 頂けたら光栄です。そもそもphpのGDを使ってというのは無理なの でしょうか? 他の言語を含め、何か方法があれば教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPによる画像処理

    PHPを使ってJPG形式の画像をPNG形式に変換しようとしていますが、画像が添付のスクリーンショットのようなものになってしまいます。 以下がPHPスクリプトです。 ちゃんとPNG形式の画像を表示させるにはどうしたらよいのでしょうか。 詳しい方、どうかご教授ください。お願いします。 <?php $fpath='pictures/DSCN1458.JPG'; $scimg=imagecreatefromjpeg(realpath($fpath)); $cpimg=imagecreatetruecolor(200,150); $cl=imagecolorallocate($cpimg,255,0,0); imagecopyresized($cpimg, $scimg, 0,0,0,0,imagesx($cpimg),imagesy($cpimg), imagesx($scimg),imagesy($scimg)); header('Content-type', 'image/png'); imagepng($cpimg); imagedestroy($scimg); imagedestroy($cpimg); ?> <html> <head><title>image transform</title></head> <body > </body> </html>

    • ベストアンサー
    • PHP
  • 画像合成について

    PHP4で画像の合成を行ないたいのですが、イマイチよくわかりません。具体的には、以下のような画像を作成して、その上に、数字の1を表示させる方法を検討しています。一応予め「1.png」という数字の1の画像を用意して下記で作成した画像の上に表示したいです。 よろしくお願いします。 $im = imagecreate(200,200) or die("error!\n"); $bg = imagecolorallocate($im , 70, 130, 180); $fg = imagecolorallocate($im , 255, 255, 255); //四角形を描く imagerectangle($im , 0, 0,200, 200, $fg) or die("error!\n"); mb_http_output("pass"); header("Content-Type: image/png"); imagepng($im); imagecolordeallocate($im, $bg); imagecolordeallocate($im, $fg); imagedestroy($im);

    • ベストアンサー
    • PHP
  • PHP+GDについて

    PHPでGDを用いてPNGファイルを生成するスクリプトを作成したのですが、うまく動作しません。 <?php $filename = "G".date("Ymdhis").".png"; $im = imagecreate(550, 250) or die ("画像の作成に失敗しました"); $bg = imagecolorallocate($im, 255,255,255); $trans = imagecolortransparent($im, $bg); imageline($im, 60,0,60,140, $trans); $filedir="graph_img/".$filename; imagepng ($im,$filedir); imagedestroy($im); echo "作成完了!"; ?> このスクリプトを実行すると、PNGファイルは生成されるんですが、ファイルサイズが0で、スクリプトの実行がそこで中断されてしまいます。 何かよい解決方法はないでしょうか?よろしくお願いいたします。

    • 締切済み
    • PHP
  • 日本語表示ができない

    こんばんわ。 winXP+apache2.2+php5で日本語が表示されません。 UTF-8で設定したいのですが、 C:\WINDOWS\php.iniの設定>下記はとあるサイトを参考にしました mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.substitute_character = none mbstring.detect_order = UTF-8,SJIS-win,eucJP-win     or mbstring.detect_order = UTF-8 C:\WINDOWS\system32\php_mbstring.dllに入れました。 ですが、php_infoで確認してもmb_系が全くでてきません。 何か他の設定(抜け?)があるのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう