Why do imagettfbbox coordinates change when angle changes?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • laredotornado@zipmail.com

    Why do imagettfbbox coordinates change when angle changes?

    Hi,

    I'm using php 4.4.4. Maybe I'm misreading the docs, but in the
    imagettfbbox manual (http://us2.php.net/imagettfbbox), it says that
    text coordinates are the same regardless of what the angle is. But I
    am getting two distinct sets of coordinates if I change the angle from
    zero to 270.

    Here's the relevant code:

    $text = "hello";
    $s = getImageSize($i mg_file);
    $imgWidth = $s[0];
    $imgHeight = $s[1];
    $source=ImageCr eateFromJPEG($i mg_file);
    $size=16;
    $black=imagecol orallocate($sou rce,0,0,0);
    $font='/usr/share/fonts/msttcorefonts/times.ttf';
    $bbox=imagettfb box($size,$angl e,$font,$text);
    $textWidth=$bbo x[2]-$bbox[0];
    $textHeight=$bb ox[5]-$bbox[3];
    $x=($imgWidth/2)-($textWidth/2);
    $y=($imgHeight/2)-($textHeight/2);
    imagettftext($s ource,$size,$an gle,$x,$y,$blac k,$font,$text );
    header("Content-type: image/jpeg");

    When I print out the bbox with 0, I get

    Array ( [0] =-3 [1] =-1 [2] =41 [3] =-1 [4] =41 [5] =-16
    [6] =-3 [7] =-16 )

    with 270, I get

    Array ( [0] =-13 [1] =-1 [2] =-13 [3] =41 [4] =-1 [5] =41
    [6] =-1 [7] =-1 )

    I must be misinterpreting the docs. Why are the coordinates
    different? - Dave
  • Rik Wasmus

    #2
    Re: Why do imagettfbbox coordinates change when angle changes?

    On Thu, 13 Mar 2008 18:18:13 +0100, laredotornado@z ipmail.com
    <laredotornado@ zipmail.comwrot e:
    I'm using php 4.4.4. Maybe I'm misreading the docs, but in the
    imagettfbbox manual (http://us2.php.net/imagettfbbox), it says that
    text coordinates are the same regardless of what the angle is.
    Nope
    But I
    am getting two distinct sets of coordinates if I change the angle from
    zero to 270.
    >
    Here's the relevant code:
    >
    $text = "hello";
    $s = getImageSize($i mg_file);
    $imgWidth = $s[0];
    $imgHeight = $s[1];
    $source=ImageCr eateFromJPEG($i mg_file);
    $size=16;
    $black=imagecol orallocate($sou rce,0,0,0);
    $font='/usr/share/fonts/msttcorefonts/times.ttf';
    $bbox=imagettfb box($size,$angl e,$font,$text);
    $textWidth=$bbo x[2]-$bbox[0];
    $textHeight=$bb ox[5]-$bbox[3];
    $x=($imgWidth/2)-($textWidth/2);
    $y=($imgHeight/2)-($textHeight/2);
    imagettftext($s ource,$size,$an gle,$x,$y,$blac k,$font,$text );
    header("Content-type: image/jpeg");
    >
    When I print out the bbox with 0, I get
    >
    Array ( [0] =-3 [1] =-1 [2] =41 [3] =-1 [4] =41 [5] =-16
    [6] =-3 [7] =-16 )
    >
    with 270, I get
    >
    Array ( [0] =-13 [1] =-1 [2] =-13 [3] =41 [4] =-1 [5] =41
    [6] =-1 [7] =-1 )
    >
    I must be misinterpreting the docs. Why are the coordinates
    different? - Dave
    "The points are relative to the text regardless of the angle , so "upper
    left" means in the top left-hand corner seeing the text horizontally."

    Which means that with normal text without an angle, you have this box with
    the array-indexes:
    6,7---------4,5
    | |
    0,1---------2,3

    However, if you have an angle of 180 (text upside down), you see this
    picture:
    2,3---------0,1
    | |
    4,5---------6,7

    So, 0 & 1 hold the 'lower left corner IF you see the text horizontally' as
    opposed to the 'lower left corner if you look at the picture'. The
    coordinates WILL change if the angele changes (how could they not?), but
    the different indexes will be for the same relative position from the text
    if you were to look at the image the way the text appears horizontal
    again. (Damned, this is far more easily explained face-to-face by just
    rotating a piece of paper...).
    --
    Rik Wasmus

    Comment

    • AnrDaemon

      #3
      Re: Why do imagettfbbox coordinates change when angle changes?

      Greetings, Rik Wasmus.
      In reply to Your message dated Thursday, March 13, 2008, 21:31:59,
      (Damned, this is far more easily explained face-to-face by just
      rotating a piece of paper...).
      QFT :D

      Thanks BTW, I was about to use this function myself and You just saved me time
      to uncover this info by my own trials and errors.


      --
      Sincerely Yours, AnrDaemon <anrdaemon@free mail.ru>

      Comment

      Working...