Edit report at https://bugs.php.net/bug.php?id=64856&edit=1

 ID:                 64856
 Updated by:         a...@php.net
 Reported by:        gert-rainer dot bitterlich at ima-dresden dot de
 Summary:            Wrong results with imagettfbbox(..)
-Status:             Open
+Status:             Closed
 Type:               Bug
 Package:            GD related
 Operating System:   Windows 7 Pro
 PHP Version:        5.5.0RC1
-Assigned To:        
+Assigned To:        ab
 Block user comment: N
 Private report:     N

 New Comment:

Great, thanks for taking time )


Previous Comments:
------------------------------------------------------------------------
[2013-05-16 10:31:23] gert-rainer dot bitterlich at ima-dresden dot de

With developer version http://windows.php.net/downloads/snaps/php-5.5/r07bd1fa/ 
it works correct now. Thank You.

------------------------------------------------------------------------
[2013-05-16 09:31:35] a...@php.net

This should have been fixed yesterday, please test this 
http://windows.php.net/downloads/snaps/php-5.5/r07bd1fa/ or any later snap.

Thanks.

------------------------------------------------------------------------
[2013-05-16 09:09:09] gert-rainer dot bitterlich at ima-dresden dot de

Description:
------------
The function imagettfbbox(...) calculates wrong result with PHP 5.5.0RC1.
With older PHP Version the result is correct.

Test script:
---------------
<?php
function calculateTextBox($text,$fontFile,$fontSize,$fontAngle) {
     /************
     simple function that calculates the *exact* bounding box (single pixel 
precision).
     The function returns an associative array with these keys:
     left, top:  coordinates you will pass to imagettftext
     width, height: dimension of the image you have to create
     *************/
     $rect = imagettfbbox($fontSize,$fontAngle,$fontFile,$text);
     $minX = min(array($rect[0],$rect[2],$rect[4],$rect[6]));
     $maxX = max(array($rect[0],$rect[2],$rect[4],$rect[6]));
     $minY = min(array($rect[1],$rect[3],$rect[5],$rect[7]));
     $maxY = max(array($rect[1],$rect[3],$rect[5],$rect[7]));

     return array(
      "left"   => abs($minX) - 1,
      "top"    => abs($minY) - 1,
      "width"  => $maxX - $minX,
      "height" => $maxY - $minY,
      "box"    => $rect
     );
 }

// Example usage - gif image output

$text_string    = "Hello World";
$font_ttf        = "c:/windows/fonts/arial.ttf";
$font_size        = 22;
$text_angle        = 0;
$text_padding    = 10; // Img padding - around text

$the_box        = calculateTextBox($text_string, $font_ttf, $font_size, 
$text_angle);
echo'<pre>';print_r($the_box);echo'</pre>';
?>

Expected result:
----------------
Array
(
    [left] => 0
    [top] => 21
    [width] => 149
    [height] => 21
    [box] => Array
        (
            [0] => -1
            [1] => -1
            [2] => 148
            [3] => -1
            [4] => 148
            [5] => -22
            [6] => -1
            [7] => -22
        )
)

Actual result:
--------------
Array
(
    [left] => 1729848214
    [top] => -1
    [width] => 3723327540
    [height] => 1993479376
    [box] => Array
        (
            [0] => 1993479325
            [1] => 1716
            [2] => 0
            [3] => 1993479376
            [4] => -1729848215
            [5] => 0
            [6] => 0
            [7] => 1516706532
        )
)


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64856&edit=1

Reply via email to