A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
PHPマニュアルを見てみましたが、直接縦書きに指定できるものは無さそうなので
簡単にですが作ってみました。
//====================================================================
// 基本設定項目
//====================================================================
// 画像サイズ
define ( IMGWID, 400 );
define ( IMGHEI, 300 );
// 使用するフォント名
define ( FONTTYPE,'HGRSMP' );
// フォントサイズ
define ( FONTSIZE,30 );
// 開始x座標
define ( START_X,300 );
// 開始y座標
define ( START_Y,40 );
// 横方向マージン
define ( MARGIN_X,10 );
// 縦方向マージン
define ( MARGIN_Y,20 );
// 改行文字数
define ( RETURN_LEN,2 );
// 方向(true:右から左 false:左から右)
define ( DIRECTION,true );
//====================================================================
// ここより実行部
//====================================================================
// 表示する文字列
$txt = "春夏秋冬";
// 生成画像
$img= imagecreatetruecolor ( IMGWID, IMGHEI );
// 背景色
$bgc= ImageColorAllocate ( $img, 255, 255, 255 );
$frc= ImageColorAllocate ( $img, 0, 0, 0 );
// 背景色を白で塗りつぶし
ImageFilledRectangle ( $img, 0, 0, IMGWID, IMGHEI, $bgc );
// フォントパスの設定
putenv ( 'GDFONTPATH='.realpath('.') );
$x = START_X;
$y = START_Y;
if ( DIRECTION ) {
$direction = -1;
} else {
$direction = 1;
}
// 文字数分のループを実行
for ( $i = 0; $i < mb_strlen($txt); $i ++ ) {
// 環境ごとに違うかも?
// 文字を1文字ずつ取り出し、コンバートを実行
$str = mb_convert_encoding(mb_substr($txt,$i,1), "UTF-8", "auto" );
// X座標を算出
// 最初以外の改行数分のループ処理の時にx座標を計算する
if ( ($i != 0) && ($i % RETURN_LEN == 0) ) {
// 方向値を使用して減算か加算を行う
$x += (FONTSIZE+MARGIN_X)*$direction;
}
// Y座標を算出
// 改行文字の時は初期y座標
// 改行しない時はフォントサイズとマージンを加算
if ( $i % RETURN_LEN == 0) {
$y = START_Y;
} else {
$y += FONTSIZE+MARGIN_Y;
}
// 文字を書き出し
ImageTTFText ( $img, FONTSIZE, 0, $x, $y , $frc, FONTTYPE, $str );
}
header ( "Content-type: image/png" );
ImagePng ( $img );
ImageDestroy ( $img );
$txtに入った文字を基本設定で行った数値で縦書きにし、
かつ、指定文字にて次の行に改行処理を行っています。
DIRECTIONをfalse設定することで逆の縦書きも出来ます(使わないと思いますが・・)
基本設定のフォント名やフォントサイズ、開始座標なんかは私のテスト環境で使った数値なのでいろいろいじってみてください。
改行文字数に関しては、指定した数値まで縦に書きます。
(2なら2文字書いて、次の文字から次の行へ)
$txtに入ってくる文字が"春夏秋冬"とか決まっているのならこんな処理はいりません。
ようは1文字ずつに分解して値を調整しつつ4回ImageTTFTextを実行すれば
いろいろな配置ができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中国語 中国語のピンイン表記 2 2022/04/29 01:51
- PHP 文字列を段落で分ける方法を教えて下さい。 2 2023/03/09 10:03
- Word(ワード) Word2013 縦書き上下二段の表、改行を続けると次ページに情報が表示されるようにしたい 3 2022/06/16 09:24
- Word(ワード) word縦書き文書の分数が縦にならない 2 2023/01/07 13:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- 文学 漢文 1 2022/05/21 02:41
- 大学・短大 大学の春学期を休学し、秋学期に復学した場合、 ①春秋②休秋③春秋④春秋⑤春→卒業(数字は学年) にな 2 2022/05/08 22:58
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- 赤ちゃん 春生まれじゃないのに春菜(はるな) 夏生まれじゃないのに夏希(なつき) 秋生まれじゃないのに秋菜(あ 6 2023/05/03 07:27
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
PHPで改行を含んだ文章の切り出し
-
ソースコードの1行が長いとき...
-
ファイルから読み取った改行文...
-
改行を読み飛ばす
-
delphi でのコード上でTab を入...
-
LaTeX: captionの中で改行した...
-
エスケープ文字の復帰(¥r)と...
-
○個ずつ改行
-
C#の改行について
-
Excel VBS、ADODB.Streamで改行
-
データベースにデータを挿入す...
-
(UWSC)1行が長いので、途中改行...
-
キャリッジリターンとラインフ...
-
C言語の標準入力で改行しない方法
-
プログラムコードを入力する場...
-
メッセージボックスで1025文字...
-
<span>を<div>に変更すると S...
-
サロゲートペア文字の半角カナ...
-
「ブログのコメント欄にリンク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
最終行の改行について
-
【VBA】エクセルで最後の不要な...
-
変数の中の改行コードをBRタグ...
-
テキストファイルから改行コー...
-
ファイルから読み取った改行文...
-
COBOLの改行
-
エクセルVBA 文字列領域が不足...
-
C++で空Enterの入力を判...
-
JavaMail,本文中の改行について
-
コンボボックスの項目中に改行を
-
C# DataGridViewのセルを改行禁...
-
JavaDoc コメントの改行について
-
改行について
-
VBAでCSVをExcelに取り込む時に...
-
jsp 改行コードで改行させて表...
-
エディットボックスで改行
-
awkで改行を除いて文字列を抜き...
おすすめ情報