GD-Problem, Farbe bleibt grün und will nicht weiß werden!

methodus

Erfahrenes Mitglied
Ich habe mir heute nen kleines scripterl gemacht zum erstellen von dynamischen buttons (zu einfachen abänderung, falls sich mal ne sektion ändern sollte)

Nun will aber die Textfarbe einfach nicht weiß sein, sondern bleibt grün, wieso weiß ich nicht.



PHP:
<?php

  if(!$imageurl){ $imageurl = "index_03.jpg"; }
  if(!$name){ $name = "HOME"; }
  $font = "gunship.ttf";
  $image = imagecreatefromjpeg($imageurl);
  $size = getimagesize($imageurl);
  $color = imagecolorallocate($image, 255, 255, 255);
  
  //-- Berechnung der Coords für eine zentrierte Lage der Schrift.

  $coord = ImageTTFBBox(12,0,$font,$name);
  $length = ($coord[2] - $coord[0]);
  $height = ($coord[1] - $coord[7]);
  $sx = ceil(($size[0] - $length) / 2);
  $sy = ceil(($size[1] - $height) / 2);
  $sy = $size[1] - $sy;
  // echo $sy . " " . $sx;

  imagettftext( $image, 12, 0, $sx, $sy, $color, $font, $name);
  header("Content-type: image/jpeg");
  imagejpeg($image,"",100);
  imagedestroy($image);  
?>

ist hier irgendwas falschgeschrieben oder liegt das am quellbild?

Quellbild:
index_03.jpg
 
zitat von php.net: usercomments:
php.net
The first color you allocate to the image is used as the background color
for that image.

Colors allocated after the first can be used for the text and shapes.

also solltest du es mit einer zweiten farbe versuchen.


und noch ein weiterer tipp, da es in deinem fall ja auch um ein jpg bild geht, ich bin darauf gestoßen, als ich für einen anderen thread dort nachgeschaut habe.
php.net
This will help anyone trying to control font colors in a JPEG. You have to
create a temporary image first, allocate the colors then merge the images
before it works. Go figure.

$im_size = GetImageSize ( "MySource.jpg" );
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];

$im = imageCreate( $imageWidth, $imageHeight );

// - or with GD 2+ -
// $im = imageCreateTrueColor( $imageWidth, $imageHeight );

// do all your color allocations here
$font_color_black = ImageColorAllocate( $im, 0,0,0);

$im2 = ImageCreateFromJPEG("MySource.jpg");

ImageCopy ($im,$im2,0,0,0,0, $imageWidth, $imageHeight);
ImageDestroy ($im2);

...finish as you please using the $im var.
 
Zuletzt bearbeitet:
Jetzt hab ich nur noch ein Problem, das allerdings etwas schwerwiegender ist (deine hinweiße haben funktioniert)

ich greife mit diesem script auf eine externe schriftart zu (gunship.ttf). Wenn ich dieses script auf meinem testserver (win2k) laufen lasse, funktioniert es.

auf meinem eigentlichen server kommt jedoch die fehlermeldung:

Warning: Could not find/open font in /home/methodus/htdocs/test/image.php on line 16

mein hoster sagte mir daraufhin, dass es möglich sein könnte, dass linux diese schriftart nicht lesen kann bzw. nicht unterstützt.

Sind Linux und Windowsschriftarten grundsätzlich anders oder kann man sie irgendwie konvertieren, damit ich sie nutzen kann?
 
Zuletzt bearbeitet:
Hey, also ich hab mirn paar vertige scripts runtergeldan, um in bilder nen text zu schreiben, nur funktioniert keins, es gibt auch keine fehlermeldungen, der hintergrund des bildes ist da, aber kein schriftzug ...
Hab auch ein Script aus nem Buch von mir abgetippt, es erstellt zwar den hintergrund, aber keine schrift ...
Ich hab auch an die ttf im verzeichnis gedacht..
Jemand ne ahnung woran des liegen kann, hab PHP 4.3.4 drauf
Gruesse Scotty
 
Zurück