Avatar billede bgo Nybegynder
10. december 2005 - 16:11 Der er 8 kommentarer og
1 løsning

Call to undefined function: imagettfbbox()

Det hér undrer mig lidt. Jeg får fejlen Call to undefined function: imagettfbbox() når jeg kører nedenstående script fra kommandolinjen, og intet billede bliver gemt. Kører jeg det gennem browseren bliver billedet gemt. Jeg har et script magen til blot uden at gemme - det viser fint billedet i browseren men giver samme fejl fra kommandolinjen (bare en test for at finde evt. forskelle).

Nu er meningen jo altså, at jeg skal opdatere en lang række billeder fra kommandolinjen automatisk (hvorfor jeg brugte dette til en test), og det ser ikke ud til at jeg kan gøre det nu. Er der nogen der har en idé til hvordan jeg får gjort det?

<?
header("Content-type: image/png");

// -> Analyzing and loading
$backgroundfile = "boinc_logo_trans.png";
$backgroundsize = getimagesize($backgroundfile);
//if($backgroundsize[2] == 1)
   
//if($backgroundsize[2] == 2)
//    $background = imagecreatefromjpeg("backgrounds/$backgroundfile");
//if($backgroundsize[2] == 3)
//    $background = imagecreatefrompng("backgrounds/$backgroundfile");   
   
// -> Filter
//if($use_filters) {
//    if(php_version_check(PHP_VERSION)) {
//        imagefilter($background,IMG_FILTER_CONTRAST,20);
//        imagefilter($background,IMG_FILTER_BRIGHTNESS,-40);
//    }
//}
// -> Resizing


//}
mysql_connect("127.0.0.1","root","") or die (mysql_error());
mysql_select_db("eseamembers") or die (mysql_error());

$sql = "SELECT flop FROM ministatsteam WHERE projectid=0 ORDER BY dato DESC LIMIT 1";

$status=mysql_query("$sql") or die (mysql_error());
while ($row = mysql_fetch_array($status)){
$flops = round($row['flop']/100,2);
}

mysql_close() or die (mysql_error());
$fontflops = "verdanab.TTF";
$fontsizeflops = 30;
$angleflops = "0";
$intro = "Help us produce more than";
$fontintro = "verdana.TTF";
$fontsizeintro = 10;
$angleintro = "0";
$flopt = "GigaFLOPS";
$fontflopt = "verdanab.TTF";
$fontsizeflopt = 10;
$angleflopt = "0";
$join = "Join our team";
$im_h = 100;
$im_w = 200;

$size=ImageTTFBBox($fontsizeflops,0,$fontflops,$flops);
$tw=abs($size[4]-$size[0]);
$upper=abs($size[5]);
$under=$size[1];
$th=$upper+$under;

$text_x = ($im_w - $tw) / 2;
$text_y = ($im_h - $th) / 2 + $th;

$sizei=ImageTTFBBox($fontsizeintro,0,$fontintro,$intro);
$twi=abs($sizei[4]-$sizei[0]);
$upperi=abs($sizei[5]);
$underi=$sizei[1];
$thi=$upperi+$underi;

$text_xi = ($im_w - $twi) / 2;
$text_yi = 15;

$sizet=ImageTTFBBox($fontsizeflopt,0,$fontflopt,$flopt);
$twt=abs($sizet[4]-$sizet[0]);
$uppert=abs($sizet[5]);
$undert=$sizet[1];
$tht=$uppert+$undert;

$text_xt = ($im_w - $twt) / 2;
$text_yt = 82;

$sizej=ImageTTFBBox($fontsizeintro,0,$fontintro,$join);
$twj=abs($sizej[4]-$sizej[0]);
$upperj=abs($sizej[5]);
$underj=$sizej[1];
$thj=$upperj+$underj;

$text_xj = ($im_w - $twj) / 2;
$text_yj = 95;

if($im_w<=($tw+20))
    $im_w = $tw + 20;


$image  = ImageCreate($im_w,$im_h);
$backblue  = ImageColorAllocate($image,200,200,255);
$black  = ImageColorAllocate($image,0,0,0);
$gray  = ImageColorAllocate($image,204,204,204);
$red    = ImageColorAllocate($image,0,150,0);
$background_rectangle    = ImageColorAllocate($image,255,0,0);
$white  = ImageColorAllocate($image,255,255,255);

//imagesetthickness($image,2);
//imageline($imange,5,5,50,50,$background_rectangle);

$background = imagecreatefrompng("$backgroundfile");

imagecopy($image, $background, ($im_w/2)-($backgroundsize[0]/2), ($im_h/2)-($backgroundsize[1]/2), 0, 0, $backgroundsize[0], $backgroundsize[1]);


//vi leger med noget størrelse


ImageTTFText ($image,$fontsizeintro,$angleintro,$text_xi,$text_yi,$black,"$fontintro","$intro");
ImageTTFText ($image,$fontsizeintro,$angleintro,$text_xj,$text_yj,$black,"$fontintro","$join");
ImageTTFText ($image,$fontsizeflopt,$angleflopt,$text_xt,$text_yt,$black,"$fontflopt","$flopt");

ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y-1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y-1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x-1,$text_y+1,$white,"$fontflops","$flops");
ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x+1,$text_y+1,$white,"$fontflops","$flops");

ImageTTFText ($image,$fontsizeflops,$angleflops,$text_x,$text_y,$red,"$fontflops","$flops");


ImagePNG($image,'test.png');
ImageDestroy($image);
?>
Avatar billede Slettet bruger
10. december 2005 - 20:56 #1
Prøv at sammenligne udskriften fra phpinfo() når du kører fra kommandolinie og når du kører gennem serveren. Det er nemlig ikke sikkert, at de har samme opsætning.
Avatar billede bgo Nybegynder
10. december 2005 - 22:43 #2
er igang med sammenligning - forløbig har jeg fundet følgende forskelle:

browser:
server API: ISAPI
allow_call_time_pass_reference: off, off
display_errors: off, off


kommandolinje:
server API
allow_call_time_pass_reference: on, on
display_errors: on, on

display errors kunne være en mulig synder. Men jeg leder lige videre. Hvordan får jeg iøvrigt det der gør det til at være ens begge steder? Jeg gik jo sådan set ud fra at samme settings blev brugt uanset om det var gennem browser eller kommandolinje det blev kørt
Avatar billede bgo Nybegynder
10. december 2005 - 23:00 #3
extension_dir: med sti
ignore_repeated_errors: on, on
log_errors: on, on (nok uden betydning)

har ISAPI sektion
har dbx sektion
har gd sektion
har mime_magic sektion
har open ssl sektion
har zip sektion


kommandolinje:
error_reporting: 2047, 2047
extension_dir: ./
ignore_repeated_errors: off, off
log_errors: off, off

har ikke ISAPI sektion
har ikke dbx sektion
har ikke gd sektion
har ikke mime_magic sektion
har ikke open ssl sektion
har ikke zip sektion

doc_root er forskellig, men det passer mig ganske udmærket ;)
extension_dir nok mere mulig synder
hmm. det er jo en gd funktion jeg bruger, og det er der ikke i kommandolinje-udgaven... tampen brænder vist

hmm. manglende open ssl kunne være forklaring på et andet problem jeg har
Avatar billede Slettet bruger
10. december 2005 - 23:18 #4
Ja, jeg tror det er extension_dir, der er synderen. Hvis du får sat den rigtigt, kommer GD nok med også.
Avatar billede bgo Nybegynder
11. december 2005 - 00:33 #5
der er bare det lille problem: hvor pokker skal jeg indstille det? :D Når det ikke kommer med andet end til browseren når jeg retter i php.ini, så er jeg lidt lost
Avatar billede Slettet bruger
11. december 2005 - 00:41 #6
Plejer phpinfo() ikke også at fortælle, hvor dens php.ini ligger?

Ellers kan man på kommandolinien fortælle den, hvor den skal finde sin ini-fil med parameteren -c
Avatar billede bgo Nybegynder
11. december 2005 - 02:31 #7
hvis du hører et ordentligt klask, så er det altså bare min håndflade der rammer min pande... DOH!!! *g*
Avatar billede bgo Nybegynder
11. december 2005 - 02:43 #8
rigtig mange tak - nu virker det :) smider du lige et svar, så er der point ;)
Avatar billede Slettet bruger
11. december 2005 - 19:16 #9
Jamen så kommer det her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester