2016-09-27 8 views
0

フォントサイズ、フォント色、テキスト座標、テキスト文字列自体、および背景イメージに基づいて、イメージにテキストを挿入する機能があります。この機能は完全に機能しています。しかし、私は文字列を画像内に生成できるように、ユーザ名をいくつかのサンプルテキストと連結するオプションを持っています。これは2つの異なる方法で起こります:

1.Username + Text - >これはイメージに生成されるテキストです。
2.Text + Username - >これは画像で生成されるテキストです。

これはオプションのためのコードサンプルです:PHPは、このように文字列を連結してイメージウォーターマークとしてのPHP文字列連結

//option 1 
    $textValue = $username . ' ' . $textValue; 


    //option 2 
    $textValue = $textValue . ' ' . $username; 

は、これは完全に作業する必要があります(右?) 下の画像の中に結果を参照してください:

最初の行にはユーザー名がテキストの前に表示され、結果は完全にうまく表示されますが、2行目ではテキストが間違っています。 私はイメージにテキストを書き込むためにPHP GDを使用しています。そしてそれはキリル文字とは関係がありません。私はキリル文字でテストしましたが、問題は同じです。テスト用の画像の実際のユーザ名を削除し、アイデアを得るために文字列 'username'に置き換えました。

+3

文字列の長さに違いがあるかどうかを確認します。テキストが同じ行に折り返されているように見えます。 – Matijs

+0

長さは問題ありません。画像操作にhttps://github.com/kus/php-imageクラスを使用しています。選択された領域は、両方の方法で同じサイズです。 –

+0

つまり、短い文字列を使用して、上書き効果が消えるかどうかを確認します。その場合は、文字列を画像の長さに合った部分に分割し、各部分のカーソルを下に移動する必要があります。 – Matijs

答えて

2

次回は質問のコメント画像にコードを入れてください。また、コードをマークして何かをコピーする方がずっと簡単です。

https://i.imgsafe.org/ab071c1bf7.png)のコードでは、->textBox()をheigth、width、およびfontSizeの両方を指定して呼び出します。

高さを省略すると、コードは複数の行に渡って文字列を折り返します。

現時点では、fontSizeのサイズは->fitToWidth()ファンクションによって縮小されます。いずれかの問題は、この関数がUnicode文字ではうまく動作しないか、または計算されたサイズでフォント自体を描画できないために、この関数が正しく動作しないことです。

問題がUnicodeの場合は解決策を使用して、2つの追加の文字列のエンコーディングが同じであることを確認して次のようになります。

// option 1 
$textValue = mb_convert_encoding($username, 'UTF-8') . 
    mb_convert_encoding(' ', 'UTF-8') . mb_convert_encoding($textValue, 'UTF-8'); 

そして:

// option 2 
$textValue = mb_convert_encoding($textValue, 'UTF-8') . 
    mb_convert_encoding(' ', 'UTF-8') . mb_convert_encoding($username, 'UTF-8'); 

をおそらくあなたは、このコードをきれいにすることができます重要なのは、文字列パートに参加する前にエンコードを変換することです。 PHP 7より前のPHPは'know'エンコーディングではありません。すべてがPHP関数のバイトシーケンスです。エンコーディングが異なると、シーケンスが異なるため、必要なすべてのエンコーディングに変換する必要があります。

+0

ありがとう、おい、私もfitToWidth()関数を探していましたが、2つの異なるケース(キリル文字)でも同じ問題が以前のユーザー名で処理されています後で、この場合と違いはありません。だから私は今どこに問題があるのですが、どのように修正することができますか? –

+0

エンコードの問題の回避策を追加しました。それがフォントファイルにあれば、私は自分の深みから外れているのではないかと心配しています。 :) – Matijs

+0

「可能性のある回避策を追加しました」とはどういう意味ですか? –