質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

4023閲覧

phpを使った画像とテキストの合成の色(フォント)について

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2016/10/18 07:14

編集2016/10/18 08:44

イメージ説明
*画像はサンプルです。

画像にテキストを合成するコードを書いているのですがあまり色などに詳しくなくて困っています。
そこで以下のことが知りたいです。

①白色のテキストを出す場合のカラーコートは何番なのでしょうか。

②フォントのサイズ調整はできるのでしょうか。
よろしくお願いします。

$font=15;のようにしてImageStringに埋め込むと画像が表示されなくなります。
フォントサイズを埋め込む際にコツというかやり方があるのでしょうか。

<?php Header("Content-Type: image/jpeg"); $img = ImageCreateFromJPEG("./images/01.jpg"); // 画像ファイル読み込み $color = ImageColorAllocate($img, 100, 100, 100); // 色指定 ImageString($img, 5, 20, 20, "Hello!!", $color); // テキスト埋め込み ImageJPEG($img); // 画像表示 ImageDestroy($img); ?>

①のカラーコードを225,225,225にしたら白っぽくなりましたがこれが白色なのでしょうか。
よろしくお願いします。

act823👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/10/18 08:06

回答が付いた質問の編集は慎重に行ってください。質問について回答があったからといって元の質問を削除しないでください。
退会済みユーザー

退会済みユーザー

2016/10/18 08:32

コメントありがとうございます。申し訳ありません。。どうすればよろしいでしょうか。
退会済みユーザー

退会済みユーザー

2016/10/18 08:45

やり方教えていただきありがとうございます。先ほど復元してみました!いかがでしょうか。
kei344

2016/10/18 08:54

復元/編集ありがとうございます。
退会済みユーザー

退会済みユーザー

2016/10/18 08:57

こちらこそありがとうございます。また何かありましたらご指導のほどよろしくお願いいたします。
guest

回答1

0

色の明度は0から255までの256個の数字でも表現できる。これはコンピュータにおける色の表示によく使われているが、プログラマが各要素の明度を8ビット(1バイト)以内の数字で表すのに便利なためである。このモデルを使えば輝度最大の赤は255,0,0となる。

RGB - Wikipedia

 

文字をいれるのは

ImageTTFText(画像ID, 文字サイズ, アングル, X座標, y座標, 文字色, フォントtのファイル,文字列);
とImageTTFText関数を使います。
離れPHP島

投稿2016/10/18 07:28

編集2016/10/18 08:28
Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/18 08:05

コメントありがとうございます。 255,255,255で最大?の白色が出力されました。 ありがとうございます。 もう一つの問題がありますのでベストアンサーはもう少しお待ちください。 よろしくお願いします。
Lhankor_Mhy

2016/10/18 08:28

失礼。追記しました。
退会済みユーザー

退会済みユーザー

2016/10/18 08:51

確認してみます。
退会済みユーザー

退会済みユーザー

2016/10/18 08:51

抜けていました。コメントありがとうございます。
退会済みユーザー

退会済みユーザー

2016/10/18 20:25

以下のコードを書くと今日背的にダウンロード&画像が壊れているという表示になります。 何か問題のあるコードがあるのでしょうか。 よろしくお願いします。 <?php // コンテントタイプを設定する header("Content-type: image/jpg"); // 画像を生成する $im = imagecreatefromgif("./images/01.jpg"); if($im) { // いくつかの色を生成する $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); // 描画する文字列 $text = 'Testing...'; // フォント自身のパスでパスを置き換える $font = 'dasaji_win.ttf'; // テキストに影を付ける imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // テキストを追加する imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // imagepng() を使用して imagejpeg() よりもクリアなテキストにする imagegif($im); imagedestroy($im); } ?>
Lhankor_Mhy

2016/10/19 01:01

imagegif関数はGIF画像を返すと思うのですが、ヘッダと整合しませんけど問題ありませんか?
退会済みユーザー

退会済みユーザー

2016/10/19 02:09

コメントありがとうございます。 先ほど $im = imagecreatefromgif("./images/01.jpg"); imagegif($im); のgifをjpegに変更しました。 <?php // コンテントタイプを設定する header("Content-type: image/jpg"); // 画像を生成する $im = imagecreatefromjpeg("./images/01.jpg"); if($im) { // いくつかの色を生成する $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); // 描画する文字列 $text = 'Testing...'; // フォント自身のパスでパスを置き換える $font = 'dasaji_win.ttf'; // テキストに影を付ける imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // テキストを追加する imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // imagepng() を使用して imagejpeg() よりもクリアなテキストにする imagejpeg($im); imagedestroy($im); } ?> それでもページを開くと強制でダウンロードされてしまいます&画像が壊れている表示がでます。 何か余計な関数かコード入れてしまっているのでしょうか。
Lhankor_Mhy

2016/10/19 03:18

> PHP が使用している GD ライブラリのバージョンに依存しており、 fontfile が / で始まらない場合、ファイル名に .ttf が追加され、 ライブラリはライブラリが定義したフォントパスから ファイル名を検索しようとします。 [PHP: imagettftext - Manual](http://php.net/manual/ja/function.imagettftext.php) とのことですが、いかがでしょう?
退会済みユーザー

退会済みユーザー

2016/10/19 06:12

コメントありがとうございます。 <?php var_dump(gd_info()); ?> するとarray(13) { ["GD Version"]=> string(26) ...と表示されます。 これでは使えないという事でしょうか。 imagettftext 以外で他にありますでしょうか。 よろしくお願いします。
Lhankor_Mhy

2016/10/19 06:38

いえ、 $font = 'dasaji_win.ttf'; とありますので、「fontfile が / で始まらない場合」に当てはまるかと思いますが、それでも動作するようなディレクトリ構造ですか?という質問です。
退会済みユーザー

退会済みユーザー

2016/10/19 07:14

コメントありがとうございます。 PHPマニュアルから抜粋して他の方のコードを参考にしてため詳しい内容がわかっていません。 // コンテントタイプを設定する // 画像を生成する // いくつかの色を生成する // 描画する文字列 まではなんとなくわかるのですが、/ フォント自身のパスでパスを置き換える $font = 'dasaji_win.ttf';  がわかりません。 お時間ある時で構いませんので教えていただけると助かります。 よろしくお願いします。
退会済みユーザー

退会済みユーザー

2016/10/19 07:20

して→して書いたため 訂正します。
Lhankor_Mhy

2016/10/19 08:50

dasaji_win.ttf のフォントファイルはどこにアップロードしましたか? PHPファイルと同じディレクトリですか?
退会済みユーザー

退会済みユーザー

2016/10/19 09:00

コメントありがとうございます。 dasaji_win.ttfはそのまま引っ張ってきてるだけでした。 すいません。。 ①フォントに特にこだわりがない場合は$font = 'dasaji_win.ttf';の記述はなくても宜しいのでしょうか。 ②合成する画像のパスはどこに記載するのでしょうか。もしくはimagettftext のファイルとは別に画像出力?するのでしょうか。 理解不足でご迷惑をおかけしています。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2016/10/19 09:03

離れ小島さんのサイトだと ImageTTFText(画像ID, 文字サイズ, アングル, X座標, y座標, 文字色, フォントtのファイル,文字列); となっており、画像ID=$image, $image = imagecreate(200, 200); となっていますがこの$imageに画像パスを入れるのでしょうか。
Lhankor_Mhy

2016/10/22 07:53

時間かかってすみません。自分の環境で試してみました。 ①記述しない場合は、文字が出力されませんでしたが、画像は表示されました。 ②「合成する画像」というのは文字の下に敷く画像のことでしょうか? それでしたら今まで通りimagecreatefromjpeg関数の中で大丈夫です。
退会済みユーザー

退会済みユーザー

2016/10/24 07:01

コメントありがとうございます。 ①当方の方でもfont = 'dasaji_win.ttf';抜いて記述してみましたがやはり画像が壊れているとの表示が出ました。 *画像パス自体は他のコードでも問題なく呼び出せます。 ②imagecreatefromjpegの中の記述との事で安心しました。 となると画像出力に問題があるのでしょうか。 それともPHPのヴァージョンで使えないのでしょうか。 PHP5.5になります。 またお忙しい中での回答ありがとうございます。 非常に助かります。
Lhankor_Mhy

2016/10/24 07:14

// コンテントタイプを設定する //header("Content-type: image/jpg"); ini_set( 'display_errors', 1 ); として、エラーメッセージを表示してみてください。
退会済みユーザー

退会済みユーザー

2016/10/24 07:56

コメントありがとうございます。 ini_set( 'display_errors', 1 ); でエラーが出せるなんて初めて知りました!ありがとうございます。 以下がエラー内容になります。 23行目と26行目が // テキストに影を付ける imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // テキストを追加する imagettftext($im, 20, 0, 10, 20, $black, $font, $text); だったのでとりあえず削除したら画像が出るようになりました。 ここからテキスト追加しようと以下のコード追加するとダメでした。 // テキストを追加する imagettftext($im, 20, 20, 20, 20, $black, $text); そこで//ヘッダー関数消してini_set( 'display_errors', 1 ); したらやはり追加したコードがエラーでした。今下記の内容のエラーを検索しています。 Wrong parameter count .... Notice: Undefined variable: font in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 23 Notice: Undefined variable: text in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 23 Warning: imagettftext(): Could not find/open font in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 23 Notice: Undefined variable: font in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 26 Notice: Undefined variable: text in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 26 Warning: imagettftext(): Could not find/open font in /Applications/XAMPP/xamppfiles/htdocs/18.php on line 26
Lhankor_Mhy

2016/10/24 08:08

> Undefined variable: text あれ? $textの行を削除してますか?
Lhankor_Mhy

2016/10/24 08:11

// コンテントタイプを設定する header("Content-type: image/jpg"); ini_set( 'display_errors', 0 ); とすると、案外画像は表示されそうな予感がします。
退会済みユーザー

退会済みユーザー

2016/10/24 08:20

コメントありがとうございます。 > Undefined variable: texのエラー表示は // テキストに影を付ける imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // テキストを追加する imagettftext($im, 20, 0, 10, 20, $black, $font, $text); を削除した時のものになります。 <?php // コンテントタイプを設定する header("Content-type: image/jpg"); ini_set( 'display_errors', 0 ); // 画像を生成する $im = imagecreatefromjpeg("./images/020.jpg"); if($im) { // いくつかの色を生成する $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); // 描画する文字列 $text = 'Testing...'; // フォント自身のパスでパスを置き換える $font = 'dasaji_win.ttf'; // テキストに影を付ける imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // テキストを追加する imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // imagepng() を使用して imagejpeg() よりもクリアなテキストにする imagejpeg($im); imagedestroy($im); } ?> でやると画像出せました。ただテキストは出てないっぽいです。わかりやすいように背景白画像に変更しております。 よろしくお願いします。
Lhankor_Mhy

2016/10/24 08:26

じゃあ、あとはフォントを置けば解決ですね。サーバのPHPファイルと同じ場所にフォントファイルを置いてください。
退会済みユーザー

退会済みユーザー

2016/10/28 07:37

コメント遅れてすいません。サイトのモバイルレスポンシブ作業で3日間時間かかってしまいコメントできませんでした。 申し訳ありません。 画像の合成の方とりあえずは完成しました。 Lhankor_Mhyさんの方がもし宜ければもう少しお付き合いしていただきたい事があります。 現在上記のコードで簡単な合成画像は作成できました。 ただココにデータベースから引張てきた画像(ユーザーが投稿→DB格納→取得&表示)を合成する事はできるのでしょうか。 想定している箇所は以下の2つになります。 ①$im = imagecreatefromjpeg("DBから取得する画像"); ←ここに動的?に画像を放り込みたいです。 ②$text = 'Testing...';のコメント部分を動的にif..elseif...else...で分ける事は可能でしょうか。例えばファッションカテゴリーのものはif(category=fashion){...};みたいな事です。 参考にしているのはhttps://lavish.jpというサイトの画像です。 (右上にカテゴリーのタグのようなものがついています。) それとも画像と画像を合成の方がいいのでしょうか。 お時間等ない場合は遠慮なくご連絡ください。 その場合は上記の回答をもってベストアンサーとさせていただきます! よろしくお願いします。
Lhankor_Mhy

2016/10/28 08:04

①DBには保存場所を書いておいて実態はファイルとして持っていれば、現状のコードとほぼ同様でできると思います。またはBlobでDBに保存されていればimagecreatefromstringでしょうか。 ②可能かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問