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 General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php

