7

最終的な出力は image(HELLO WORLD) のようになります: 線の太さは無視してください..

これが私がやっていることです:-

$im = imagecreate(400,400); 

$txtcol = imagecolorallocate($im, 0xFF, 0x00, 0x00);

$size = 20;

$txt = 'DUMMY TEXT';

$font = './font/Capriola-Regular.ttf';

/*two points for base line*/

$x1 = 50; $x2 = 300; 

$y1 = 150; $y2 = 170;

/*bof finding line angle*/

$delta_x = $x2-$x1;

$delta_y = $y2-$y1;

$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180 / M_PI)-360;

/*eof finding the line angle*/


imageline($im,$x1,$y1,$x2,$y2,$txtcol); //Drawing line

imagettftext($im, $size, $texangle, $x1, $y1, $txtcol, $font, $txt); // Drawing text over line at line's angle

そして、現在の出力は次のようになります。

電流出力

私のコードの何が問題なのか誰にもわかりますか?

ありがとう

4

3 に答える 3

2

さて、遊んでいました。置き換えてみてください:

$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180 / M_PI)-360;

と:

$texangle = (atan2($delta_y,$delta_x) * -180 / M_PI)-360;

あなたの値で出力:

ここに画像の説明を入力

他の値で出力:

ここに画像の説明を入力

于 2013-02-15T14:18:55.703 に答える
1

2つの考え、現在テストできません。

  1. ここで、は0(x = 1、y = 0)または(x = 0、y = 1)です。あなたのテキストは90度ずれているようです。これは通常、0が直接正しいと仮定していることを意味しますが、その逆の場合もあります。

  2. (rad2deg(atan2($delta_y,$delta_x)) * 180 / M_PI)-360;ここで二重の仕事をしていますか?rad2degラジアンから度に変換します。 180 / M_PIラジアンから度への変換でもあります。

于 2013-02-15T13:54:59.490 に答える
1

これはあなたが探しているものとまったく同じではありませんが、私はそれがあなたを助けると信じています

$im = imagecreate(400,400); 

$txtcol = imagecolorallocate($im, 0xFF, 0xFF, 0x00);

$size = 20;

$txt = 'DUMMY TEXT';

$font = 'Capriola-Regular.ttf';

/*two points for base line*/

$x1 = 70; $x2 = 170; 

$y1 = 140; $y2 = 240;

/*bof finding line angle*/

$delta_x = $x2-$x1;

$delta_y = $y2-$y1;

$texangle = (rad2deg(atan2($delta_y,$delta_x)) * 180 / M_PI)-360;

/*eof finding the line angle*/


imageline($im,$x1,$y1,$x2,$y2,'0xDD'); //Drawing line
imagettftext($im, $size, -45, $x1, $y1-10, '0xDD', $font, $txt); // Drawing text over line at line's angle

header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);

values are hard coded. Here the angle is given as -45 and for that angle if you want your text to appear above line you have to reduce the value from initial Y position of your line. And you will have to write code to calculate the angle with line's x1,x2y1,y2

于 2013-02-15T13:52:05.903 に答える