Text als Bild darstellen, hilfe!

AndreNb

Grünschnabel
Hallo Leute,

Ich brauche ein funktionsfähiges PHP-Script das mir Texte, unterschiedlicher Länge etc. , als Bild darstellt (für Kopierschutz etc...)
Das Problem ist einmal das, dass die Länge und Breite des CreateImage nicht genau bestimmt werden darf, da es immer unterschiedlich lange Texte sind!
Also sollte er diese Länge korrekt in diesen einbeziehen...

Desweiteren bekomme ich bei der Ausgabe von Bildern immer solche komischen Zeichen... ->

‰PNG  IHDR?H¥ËK© PLTE---@€ÿÿÿ?ZµÙtRNS7áèðëIDATxœí˜ÍŠÝ0 …5‚€ñ¾³V½2y‹º/¥ÓýúÆ« r³Ç×!ëKÁ??>•Ý›tÙã(lðØé³i{üÜO¸à/¶7âºýÂ6Å<09n »w×e?o†a>òÿLxwƒ›´ä}!a`Üt{?HOÂöÎoÊÍõ–}5D×——×+ä¶Hñ[¹fWIuîéÉ#ÖÍÑfŽ$0ï+¢\ðœ1¸" êÄ9ÖÐóLaLŒÒ¼À:@oY¯Ay€´:¤ÚäþjªXÜÉÇJÀ5ÀFm1¸Á—•?Q^3

<- an dessen Stelle eigentlich die Bilder sein sollten!

Ich bitte um Hilfe!

André B.
 
Also die Grösse kannst du dir an Hand der Länge des Strings berechnen.

z.B. 10 Zeichen mit Font XXX und Schriftgrösse XX machen (10 * XX) + Rechter und Linker Rand = XXX Pixel.

2. Wie gibst du das denn aus?
schaut nach
PHP:
<html>
<body>
<? print($img); ?>
</body>
</html>

aus. Und das kann ja nicht funktionieren.
 
Ne, ich kopiere am besten mal das, wie weit ich gekommen bin ->
(achja danke wegen dem Längenberechnen)

---------------------
header("Content-Type: image/png");

function schrift_als_bild($string){
$width = 400;
$height = 72;

$img = imagecreate($width,$height);

$black = ImageColorAllocate($img, 0, 0, 0);
$white = ImageColorAllocate($img, 255, 255, 255);
$blau = ImageColorAllocate($img, 0, 64, 128);
$grey = Imagecolorallocate($img,45,45,45);

ImageColorTransparent($img,$black);
ImageFill($img, 0, 0, $black);

$font_height = ImageFontHeight(3);
$font_width = ImageFontWidth(3);
$image_height = ImageSY($img);
$image_width = ImageSX($img);
$Length = $font_width*strlen($string);

$image_center_x = ($image_width/2)-($length/2);
$image_center_y = ($image_height/2)-($font_height/2);

ImageString($img,3,0,0,$string,$grey);

ImagePNG($img);
ImageDestroy($img);
}
-------------------------------------

Das Ganze in einer extra Datei.
Momentan hab ich den Fehler das NICHTS ausgegeben wird... also alles weiß bleibt... vermutlich ein dummer Fehler *such*...

Aber könnte das Ganze SO theoretisch funktionieren?
 
Original geschrieben von AndreNb
‰PNG  IHDR?H¥ËK© PLTE---@€ÿÿÿ?ZµÙtRNS7áèðëIDATxœí˜ÍŠÝ0 …5‚€ñ¾³V½2y‹º/¥ÓýúÆ« r³Ç×!ëKÁ??>•Ý›tÙã(lðØé³i{üÜO¸à/¶7âºýÂ6Å<09n »w×e?o†a>òÿLxwƒ›´ä}!a`Üt{?HOÂöÎoÊÍõ–}5D×——×+ä¶Hñ[¹fWIuîéÉ#ÖÍÑfŽ$0ï+¢\ðœ1¸" êÄ9ÖÐóLaLŒÒ¼À:@oY¯Ay€´:¤ÚäþjªXÜÉÇJÀ5ÀFm1¸Á—•?Q^3
Der Header wird nicht richtig erkannt oder interpretiert...

Code:
header("Content-type: image/png");
 
Aber könnte das Ganze SO theoretisch funktionieren?
Es funktioniert so auch praktisch :)

Wie und wo rufst du diese Funktion denn auf?

Stelle dein error_reporting mal auf E_ALL.....
Code:
error_reporting(E_ALL)
.....werden Fehler ausgegeben?
 
Zuletzt bearbeitet:
Ich hab das jetzt nur zum testen die Datei aufgerufen wo nur diese Zeilen drin
stehen!
Aber funktioniert wie gesagt nicht :(
Ansonten wird sie später zu beginn der index.php includiert!
 
Wie...du includierst diese Datei in ein Skript?...welches vermutlich ansonsten HTML-Code ausgibt?

Du musst die Funktion "schrift_als_bild()" aufrufen....optimalerweise im selben Skript.

In der index.php schreibst du dann einen <img>-Tag, wo du als src dieses Skript angibst. Als GET-Parameter kannst du da beispielsweise einen String übergeben...welchen du der Funktion dann beim Aufruf als Parameter mitgibst.


ca.so.....
bild.php
PHP:
<?php

header("Content-Type: image/png");

function schrift_als_bild($string){
$width = 400;
$height = 72;

$img = imagecreate($width,$height);

$black = ImageColorAllocate($img, 0, 0, 0);
$white = ImageColorAllocate($img, 255, 255, 255);
$blau = ImageColorAllocate($img, 0, 64, 128);
$grey = Imagecolorallocate($img,45,45,45);

ImageColorTransparent($img,$black);
ImageFill($img, 0, 0, $black);

$font_height = ImageFontHeight(3);
$font_width = ImageFontWidth(3);
$image_height = ImageSY($img);
$image_width = ImageSX($img);
$Length = $font_width*strlen($string);

$image_center_x = ($image_width/2)-($length/2);
$image_center_y = ($image_height/2)-($font_height/2);

ImageString($img,3,0,0,$string,$grey);

ImagePNG($img);
ImageDestroy($img);
}
$text=(isset($_GET['text']))?$_GET['text']:'kein Text angegeben';
schrift_als_bild($text);
?>


index.php
Code:
<img src="pfad/zur/bild.php?text=hallo%20bild">
 
Zuletzt bearbeitet:
nice, danke!
Aber leider wird das Bild nicht angezeigt :( nur so ein noimage-button

/EDIT: Ach ich Idiot :-( ne schon gut ;)
Funktioniert Alles!
Dankeschön nochmals!
 
Zuletzt bearbeitet:
Zurück