Re: PHP Warning: imagettftext() expects parameter 2 to be double
| From: | James | Date: | Wed, 07 Dec 2005 12:06:48 +0000 |
| Subject: | Re: PHP Warning: imagettftext() expects parameter 2 to be double | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-227038@lists.php.net to get a copy of this message | ||
Hi,
Thank you for getting back to me, your the first.
The array works fine I have tested it using var_dump().
Attached are the two files xml.test this holds the array of the text
blocks which is being parsed by image.php.
Line 38 is the problem, if you comment around the foreach() statement and
un-comment the commented lines you should see it working fine, its when its
within the foreach statement when it errors.
Regards,
James
Jochem Maas Wrote:
> James wrote:
>> > Hi there,
>> >
>> > I have been using the GD functions from PHP5.0 on Mac OS X.
>> >
>> > I have a simple script that creates a PNG image with text on the image
>> using
>> > fonts using FreeType 2.
>> >
>> > I am trying to use the imagettftext() function within a foreach loop but
I
>> > get the following error:
>> >
>> > PHP Warning: imagettftext() expects parameter 2 to be double
>
> what does paramter 2 contain in each case? var_dump(), print_r(), echo ?!?
>
>> >
>> > The code is as follows:
>> >
>> > $font['type']="./fonts/font.ttf²;
>> >
>> >
>> >
>>
>> $font['color']=imageColorAllocate($card['png'],$font['hexcolor']['r'],$font[
>> > 'hexcolor']['g'],$font['hexcolor']['b']);
>> >
>> > imageFill($card['png'],0,0,$card['color']);
>> >
>> > foreach ($xml->textblock as $text) {
>> > $fontsize=$text->fontsize; $fontangle=$text->fontangle;
>> > $fontxpos=$text->fontxpos; $fontypos=$text->fontypos;
>> > $text=$text->text;
>
> try var_dump($text); or print_r($text); to see what you have
> (if its an XML node object - dump $fontsize, $fontxpos instead!!!)
>
>> >
>> imagettftext($image['png'],$fontsize,$fontangle,$fontxpos,$fontypos,$font['c
>> > olor'],$font['type'],$text); }
>> >
>> > It works fine if I add just one line outside of the loop but as soon as
>> > its within the loop it errors.
>> >
>> > Cheers,
>> >
>> > James
>> >
<?php if (file_exists('test.xml')) { $xml=simplexml_load_file('test.xml'); $image['name']=$xml->name; $image['hexcolor']=$xml->frontcolor; $image['intcolor']=hex2int($image['hexcolor']); $image['width']=$xml->width; $image['height']=$xml->height; $font['type']=$xml->font; $font['hexcolor']=$xml->fontcolor; $font['intcolor']=hex2int($font['hexcolor']); $font['type']="./fonts/".$font['type']; $image['png']=imageCreateTrueColor($image['width'],$image['height']); $image['color']=imageColorAllocate($image['png'],$image['intcolor']['r'],$image['intcolor']['g'],$image['intcolor']['b']); $font['color']=imageColorAllocate($image['png'],$font['intcolor']['r'],$font['intcolor']['g'],$font['intcolor']['b']); imageFill($image['png'],0,0,$image['color']); foreach ($xml->textblock as $text) { $fontsize=$text->fontsize; $fontangle=$text->fontangle; $fontxpos=$text->fontxpos; $fontypos=$text->fontypos; $text=$text->text; imagettftext($image['png'],$fontsize,$fontangle,$fontxpos,$fontypos,$font['color'],$font['type'],"$text",array()); } /* imagettftext($image['png'],"83",0,10,120,$font['color'],$font['type'],"Happy",array()); imagettftext($image['png'],"55",0,10,178,$font['color'],$font['type'],"Birthday",array()); imagettftext($image['png'],"104",0,8,280,$font['color'],$font['type'],"Cunt",array()); */ #$image['png']=imagerotate($image['png'],90,0); header("Content-type: image/png"); imagepng($image['png']); } else { exit('Failed to open test.xml.'); } function hex2int($hex) { return array( 'r' => hexdec(substr($hex, 0, 2)), 'g' => hexdec(substr($hex, 2, 2)), 'b' => hexdec(substr($hex, 4, 2)) ); } ?><?xml version='1.0' standalone='yes'?> <card> <name>Welcome</name> <frontcolor>003366</frontcolor> <width>360</width> <height>360</height> <font>princetown.ttf</font> <fontcolor>CC6666</fontcolor> <textblock> <fontsize>83px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>140</fontypos> <text>Welcome</text> </textblock> <textblock> <fontsize>60px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>240</fontypos> <text>to</text> </textblock> <textblock> <fontsize>83px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>340</fontypos> <text>My Website</text> </textblock> </card>
<?php if (file_exists('test.xml')) { $xml=simplexml_load_file('test.xml'); $image['name']=$xml->name; $image['hexcolor']=$xml->frontcolor; $image['intcolor']=hex2int($image['hexcolor']); $image['width']=$xml->width; $image['height']=$xml->height; $font['type']=$xml->font; $font['hexcolor']=$xml->fontcolor; $font['intcolor']=hex2int($font['hexcolor']); $font['type']="./fonts/".$font['type']; $image['png']=imageCreateTrueColor($image['width'],$image['height']); $image['color']=imageColorAllocate($image['png'],$image['intcolor']['r'],$image['intcolor']['g'],$image['intcolor']['b']); $font['color']=imageColorAllocate($image['png'],$font['intcolor']['r'],$font['intcolor']['g'],$font['intcolor']['b']); imageFill($image['png'],0,0,$image['color']); foreach ($xml->textblock as $text) { $fontsize=$text->fontsize; $fontangle=$text->fontangle; $fontxpos=$text->fontxpos; $fontypos=$text->fontypos; $text=$text->text; imagettftext($image['png'],$fontsize,$fontangle,$fontxpos,$fontypos,$font['color'],$font['type'],"$text",array()); } /* imagettftext($image['png'],"83",0,10,120,$font['color'],$font['type'],"Happy",array()); imagettftext($image['png'],"55",0,10,178,$font['color'],$font['type'],"Birthday",array()); imagettftext($image['png'],"104",0,8,280,$font['color'],$font['type'],"Cunt",array()); */ #$image['png']=imagerotate($image['png'],90,0); header("Content-type: image/png"); imagepng($image['png']); } else { exit('Failed to open test.xml.'); } function hex2int($hex) { return array( 'r' => hexdec(substr($hex, 0, 2)), 'g' => hexdec(substr($hex, 2, 2)), 'b' => hexdec(substr($hex, 4, 2)) ); } ?><?xml version='1.0' standalone='yes'?> <card> <name>Welcome</name> <frontcolor>003366</frontcolor> <width>360</width> <height>360</height> <font>princetown.ttf</font> <fontcolor>CC6666</fontcolor> <textblock> <fontsize>83px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>140</fontypos> <text>Welcome</text> </textblock> <textblock> <fontsize>60px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>240</fontypos> <text>to</text> </textblock> <textblock> <fontsize>83px</fontsize> <fontangle>0</fontangle> <fontxpos>10</fontxpos> <fontypos>340</fontypos> <text>My Website</text> </textblock> </card>