
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
【VBA】エクセルで最後の不要な...
-
グレープシティのSPREAD...
-
C#の改行について
-
エスケープ文字の復帰(¥r)と...
-
VBA テキストボックスの行数取得
-
VBでcsv読込TextFieldParser...
-
1行ごとに取得して、その改行...
-
最終行の改行について
-
PHPでexec関数の記述方法について
-
awkで改行を除いて文字列を抜き...
-
別ファイルからテキストを抽出
-
FTP受信する際、改行コードをは...
-
texのchapterが改行される
-
PHPで改行を含んだ文章の切り出し
-
jsp 改行コードで改行させて表...
-
ラベル(スタティックテキスト)...
-
エクセルVBA 文字列領域が不足...
-
エクセルのVBAでセルのコメント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
LaTeX: captionの中で改行した...
-
ソースコードの1行が長いとき...
-
改行について
-
エスケープ文字の復帰(¥r)と...
-
texのchapterが改行される
-
C# DataGridViewのセルを改行禁...
-
最終行の改行について
-
テキストボックス行の桁数を制...
-
【VBA】エクセルで最後の不要な...
-
秀丸の正規表現で複数行にわた...
-
C++で空Enterの入力を判...
-
jsp 改行コードで改行させて表...
-
C++でのCRLFについて
-
JavaDoc コメントの改行について
-
C#の改行について
-
COBOLの改行
-
ファイルから読み取った改行文...
-
文字列型変数に1024を超えた文...
-
1行ごとに取得して、その改行...
おすすめ情報