# Text ins Bild schreiben



## SaTaN (7. August 2003)

Hallo,

Würde mir bitte jemand verraten wie
ich denn Text in das Bild bekomme ?

Ich beisse mir die Zähne dort schon aus.

http://www.tutorials.de/tutorials129901.html
Dieser Thread wurde wohl schon geschlossen,
ich konnte da nichts mehr rein posten


```
# Aufruf der Funktion:
randomThumbCreate ("input.jpg", "output.jpg");

# Die Funktion:
function randomThumbCreate ( $bild, $thumb_name )
  {
    # Legt die Breite und Höhe des zu erstellenden Thumbs an
    $thumb_hoehe = 100;
    $thumb_breite = 100;

    # Erstellt den Thumb (vorerst leer)
    $im_des = imagecreate ( $thumb_hoehe, $thumb_breite );
    # Lädt das Source Bild $bild in den Speicher
    $im_src = imagecreatefromjpeg ( $bild );
    # Liest die Breite und Hoehe des Source Bildes
    $size = getimagesize ( $bild );
    $breite = $size[0];
    $hoehe = $size[1];

    # Setzt eine zufällige Starthöhe und breite, um ein Stück des #Bildes auszuwählen das '-$thumb_hoehe' & '-$thumb_hoehe' ist dafür
#gedacht, damit keine Fläche leer bleibt, weil die Zufallszahlen nicht
#zu weit nach rechts oder unten gelangen
    mt_srand ( (double)microtime()*1000000 );
    $r_hoehe = mt_rand ( 0, $hoehe-$thumb_hoehe );
    $r_breite = mt_rand ( 0, $breite-$thumb_breite );
    # Kopiert einen Teil des alten Bildes in das neue Thumb. PHP-Manual gucken für Bedeutung der einzelnen Werte!
    imagecopy ( $im_des, $im_src, 0, 0, $r_breite, $r_hoehe, $thumb_breite, $thumb_hoehe );
    # Speichert das Bild unter '$thumb_name' (Wer will kann aus der Funktion diese Variable rausnehmen, dann wird das Bild sofort ausgegeben)
    imagejpeg ( $im_des,$thumb_name );

    # Löscht den Thumb aus dem Speicher
    imagedestroy ( $im_des );
    # Löscht den Thumb aus dem Speicher
    imagedestroy ( $im_src );
  }
```
Vielen Dank

euer SaTaN


----------



## boelkstoff (7. August 2003)

wo ist denn genau dein problem??

Gib doch mal code wo du scheiterst!

Nicht einfach code kopieren und sagen ich will das , das und das haben, macht mal leute...

aber um dich zu beruhigen hänge ich am gleichen problem!

```
$mycolor = imagecolorallocate ($im_des, 255, 255, 255);
   
    imagefttext($im_des, 12, 0, 100, 100, $mycolor, "$myfont", "Hello", array());
```

ich komme mit $myfont nicht klar! Woher weiß ich wo die schriftarten bei meinem provider liegen?? Oder muss ich mir eine schriftart in mein verzeichniss kopieren und diese dann benutzen??


----------



## SaTaN (7. August 2003)

hey

hier kann ich Dir Weiter helfen.


```
$text = "Weiter...";
$font = $_SERVER["DOCUMENT_ROOT"] . "/verdana.ttf";
imagettftext($img, 24, 0, 20, 50, $bcolor, $font, $text);
```
Die FONTS kannst du jetzt selbst bestimmen.
Du muss sie nur ersetzen mit verdana.ttf.
Nicht immer gleich mekern bitte.
Manchmal hat mal ein hänger.
Bin halt kein Profi.

Vielen Dank

euer SaTaN


----------



## boelkstoff (7. August 2003)

cooooolll

danke

hab den text zawr noch nicht gesehen, aber das hängt jetzt an den parameter ! zumindest kommt keine Fehlermeldung!

danke nochmal!


----------



## boelkstoff (7. August 2003)

hab noch ein Problem mit den farben


```
$thumb_groesse = 0.3; //= prozent
    $im_src = imagecreatefromjpeg ( $bild );
    $size = getimagesize ( $bild );
    $breite = $size[0];
    $hoehe = $size[1];
    $thumb_breite=$breite*$thumb_groesse;
    $thumb_hoehe =$hoehe*$thumb_groesse;

    
    $im_des = imagecreate ( $thumb_breite, $thumb_hoehe );
    
    imagecopyresized  ( $im_des, $im_src, 0, 0,0,0,    $thumb_breite,$thumb_hoehe,$breite,$hoehe );
    

    $mycolor = imagecolorallocate ($im_des, 0, 0, 0);
    $font = $_SERVER["DOCUMENT_ROOT"] . "/test/verdana.ttf";
   
    imagefttext($im_des, 20, 0, 20, $thumb_hoehe-25, $mycolor, $font, "Test", array());

 
	imagejpeg ( $im_des,'',50);
```

Wie hier zu sehen ist, haut die farbe nicht hin.
http://www.top-leds.de/test/thumb.php
Was mache ich falsch??


----------



## methodus (7. August 2003)

das problem hatte ich auch mal gehabt:

problemlösung


----------



## boelkstoff (7. August 2003)

jo danke!

hat fkt.
hatte das zwar auch mit den zwei farben schon probiert, aber halt an einer falschen stelle!


----------



## SaTaN (7. August 2003)

hey

Hmm sorry ich habe das nicht geschnallt.

Würdest du mir das komplett Posten ?

Vielen Dank

euer SaTaN


----------



## boelkstoff (7. August 2003)

jo, hier ein ausschnitt


```
$thumb_groesse = 0.3;
    $im_src = imagecreatefromjpeg ( $bild );
    $size = getimagesize ( $bild );
    $breite = $size[0];
    $hoehe = $size[1];
    $thumb_breite=$breite*$thumb_groesse;
    $thumb_hoehe =$hoehe*$thumb_groesse;
    $im_des = imagecreate ( $thumb_breite, $thumb_hoehe );
    $white = ImageColorAllocate($im_des, 0xFF, 0xFF, 0xFF);
    $black = ImageColorAllocate($im_des, 0x00, 0x00, 0x00);
	
    imagecopyresized  ( $im_des, $im_src, 0, 0,0,0, $thumb_breite,$thumb_hoehe,$breite,$hoehe );
    
    $font = $_SERVER["DOCUMENT_ROOT"] . "/test/verdana.ttf";
    ImageTTFText($im_des, 40, 0, 20, $thumb_hoehe-25, $white, $font, "(C)Bernhard-Stuben.de 2003");


    imagejpeg ( $im_des,'',50);
    imagedestroy ( $im_des );
    imagedestroy ( $im_src );
```


----------



## SaTaN (7. August 2003)

Hallo,

Ju hu....

Ich habe es auch geschaft.
Vielen Dank !

euer SaTaN


----------



## backlash (8. August 2003)

Hi,

habe ein ähnliches Problem, bekome zwar text und so weiter ins Bild rein, aber die Farben passen absolut nicht, das bild sieht danach ziemlich verwaschen aus.

Hat wer von euch ne idee ?

backlash


----------



## SaTaN (8. August 2003)

Hallo backlasch,

mit der Lösung vom boelkstoff
funzt das sehr gut.


```
$thumb_groesse = 0.3;
    $im_src = imagecreatefromjpeg ( $bild );
    $size = getimagesize ( $bild );
    $breite = $size[0];
    $hoehe = $size[1];
    $thumb_breite=$breite*$thumb_groesse;
    $thumb_hoehe =$hoehe*$thumb_groesse;
    $im_des = imagecreate ( $thumb_breite, $thumb_hoehe );
    $white = ImageColorAllocate($im_des, 0xFF, 0xFF, 0xFF);
    $black = ImageColorAllocate($im_des, 0x00, 0x00, 0x00);
    
    imagecopyresized  ( $im_des, $im_src, 0, 0,0,0, $thumb_breite,$thumb_hoehe,$breite,$hoehe );
    
    $font = $_SERVER["DOCUMENT_ROOT"] . "/test/verdana.ttf";
    ImageTTFText($im_des, 40, 0, 20, $thumb_hoehe-25, $white, $font, "(C)Bernhard-Stuben.de 2003");


    imagejpeg ( $im_des,'',50);
    imagedestroy ( $im_des );
    imagedestroy ( $im_src );
```

Poste doch mal ein bischen Code um zu schauen was du gemacht hast,
oder vergleiche mit dieser Lösung oben.

Viel Spass

euer SaTaN


----------



## backlash (8. August 2003)

Habe des grad mal mit dem Code von Boelkstoff probiert, ist das gleiche ergebnis, bild qualität unter aller würde.

Hmm kanns sein das man an der GD selber noch ein paar einstellungen verändern kann ?

[EDIT]
Habe den "Fehler" gefunden, anstatt imagecreate einfach :
$im_des = imagecreatetruecolor ( $thumb_breite, $thumb_hoehe );

Kein Plan warum das so ist und warum des bei manchen auch ohne das funktioniert, welche GD-Lib Version nutzt Ihr? Evtl. liegts ja daran.

[/EDIT]

backlash


----------



## Fabian H (8. August 2003)

Kann sein, dass es daran liegt, dass imeagecopy immer 2 Bilder vom gleichen Frabtyp benötigt, und da imagecreatefromjpeg zwar immer Truecolor Bilder liefert, imagecreate aber nur highcolor, kommt es zu Bildfehlern.

Versuch mal statt imagecreate  zu benutzen.


----------



## methodus (8. August 2003)

ich hatte nie probleme nur mit imagecreate, vllt. liegts auch bei der ausgabe, nimm doch mal statt 50% 100% bildquali, weil ich nicht glaube dass es an imagecreatetruecolor liegt. es wär mir auch neu, wenn imagecopy nur bilder gleichen typs ordentlich zusammenfügt.

zeig doch mal so nen beispielbild! damit man auch mal den optischen reiz damit strapazieren kann, wenns so schlecht aussieht


----------



## Fabian H (8. August 2003)

Ich zitiere einen Kommentar von http://de.php.net/imagecopy:


> If you are getting an error when using ImageCopy(), be sure that both images are of the same type - either True Color or Palette.
> GD 1.x can copy images of different types, but with GD 2.0 this will cause an error.
> Note that ImageCreateFromJPEG always creates a True Color Image.
> You can use ImageCreateTrueColor() instead of Image Create() to solve this problem.



//edit: Da die GD < 2.0 eben keinen Fehler ausgibt, macht sich dies in Form von starken Farbverfälschungen bemerkbar!


----------

