私よりも PHP の経験が豊富な人の助けを借りて、本当に感謝しています。
PHP を使用して密集したテキスト画像を生成しています。これまでのところ、次のように機能します。
- まず、x 文字のランダムな文字列を生成します。
- 次に、背景などを含む画像を作成します。
- 最初の文字を特定の場所に配置します(サイズ、回転などをランダム化します)
次に、次の文字を配置して、その境界ボックスの左下隅が前の文字の境界ボックスの右下隅と同じポイントになるようにします (さらにランダム性など)。そのためのコードは次のようになります。
$coords = array(); $pos_y = $this->image_height / 2; for ($counter = 0; $counter < $this->code_length; $counter++){ $sbox = @imagettfbbox($size, $angle, $font, $this->code[$counter]); if($counter == 0) $pos_x = $this->image_width / $this->code_length; else // element 2 is the x co-ord of the bottom right corner of the ttf box $pos_x = $coords[$counter-1][2]; @imagettftext($this->image, $size, $angle, $pos_x, $pos_y, $fontcolor, $font, $this->code[$counter]); }
文字列内の後続の文字ごとに 4 を繰り返します。
私が望むのは、可能な限り、すべてのキャラクターがその隣人に触れていることです. 私がこれまで行ってきたことは、グリフの下隅が多かれ少なかれ境界ボックスの隅にある「M」のような文字ではうまく機能しますが、「G」や「I」などの文字にはどこにも近づきません。
バウンディングボックスだけでなく、ttfグリフの実際の寸法を取得する方法を知っている人はいますか? または、この問題にアプローチするためのより良い方法を考えられる人はいますか?
どんな考え/アイデア/アドバイスも大歓迎です。