http://www.hotscripts.com/Detailed/52111.html
Det var det första jag hittade, men det finns säkert fler.
29 svar · 1 146 visningar · startad av learn
Gokväll!
Jag har sökt runt här på wF utan att hitta riktigt vad jag är ute efter...
Vad jag vill ha är ett enkelt php-script som skapar en gif-bild-fil innehållande text.
Exempel: Användaren matar in sitt namn "Anders" och en fil med namnet anders.gif skapas i angiven katalog. Gärna transparent bakgrund.
Någon som kan hjälpa mig..?
http://www.hotscripts.com/Detailed/52111.html
Det var det första jag hittade, men det finns säkert fler.
Men om man vill spara bilden...?
RED:
När användaren matar in sitt namn i ett formulär så ska bilden skapas i en mapp för att senare visas.
Någon som ngt tips/script?? Tack på förhand!
Funkar inte... Inget händer. Hur ska jag "anropa" scriptet. Så här ser det ut:
$text = $_POST["namn"];
$font = "verdana.ttf";
$getsize = 8;
$size = imagettfbbox($getsize+1, 0, $font, $text);
$image = imagecreatetruecolor(abs($size[2]) + abs($size[0]), abs($size[7]) + abs($size[1]));
if (!isset($_GET["color"])) $gold = imagecolorallocate($image, 206, 20, 20);
else $gold = imagecolorallocate($image, 177, 177, 177);
$back = ImageColorAllocate($image,255,255,255);
ImageFilledRectangle($image,0,0,302,20,$back);
imagettftext($image, $getsize, 0, 0, $getsize+2, $gold, $font, $text);
header("Content-type: image/gif");
imagegif($image, "$text.gif");
imagedestroy($image);
Hur ska jag använda koden?
Här är ett exempel, hoppas det gör det tydligare:
<html>
<body>
<form method="post" action="#">
<input type ="text" name="namn" value="Din bildtext"/>
<input type="submit" value="Skapa bild" />
</form>
<?php
if(isset($_POST["namn"])) {
$text = $_POST["namn"];
$font = "verdana.ttf";
$getsize = 8;
$size = imagettfbbox($getsize+1, 0, $font, $text);
$image = imagecreatetruecolor(abs($size[2]) + abs($size[0]), abs($size[7]) + abs($size[1]));
if (!isset($_GET["color"])) $gold = imagecolorallocate($image, 206, 20, 20);
else $gold = imagecolorallocate($image, 177, 177, 177);
$back = ImageColorAllocate($image,255,255,255);
ImageFilledRectangle($image,0,0,302,20,$back);
imagettftext($image, $getsize, 0, 0, $getsize+2, $gold, $font, $text);
//header("Content-type: image/gif");
imagegif($image, "$text.gif");
imagedestroy($image);
print '<img src="'.$_POST["namn"].'" alt="testbild" />';
}
?>
</body>
</html>
Hmm, får detta resultat lokalt:
Fatal error: Call to undefined function: imagettfbbox() in C:\Documents and Settings\Daniel Westman\Mina dokument\Webbutveckling\hem-sidan\txtpic.php on line 15
och detta online:
Warning: imagegif() [function.imagegif]: Unable to open 'Test.gif' for writing in /home/web/domains/hej.se/public_html/txtpic.php on line 26
testbild
Löste sig på servern, det visade sig att jag inte hade 777 på mappen... Men varför fungerar det inte lokalt??
PS. Varför blir det så fruktansvärt dålig kvalitet på bilden...??
En tilläggsfråga, hur gör jag för att få "bg.gif" som bakgrund till texten?
Vet ej, tyvärr. Kanske någon annan som kan mer kan hjälpa dig.
learn skrev:
En tilläggsfråga, hur gör jag för att få "bg.gif" som bakgrund till texten?
Ta en titt på imagecreatefromgif (http://se2.php.net/manual/sv/function.imagecreatefromgif.php) om det kan vara något.
Hittade just detta:
imageSetTile($image,$imageBack);
imagefill($image,0,0,IMG_COLOR_TILED);
Bilden $image fylls med bilden $imageBack.
Har inte provat själv...
Ok, vart och hur ska jag stoppa in detta i koden ovan?
learn skrev:
Ok, vart och hur ska jag stoppa in detta i koden ovan?
Innan du skriver ut texten på bilden.
Jag känner mig lite bakom flötet just nu, kan du skriva ett litet exempel med hela koden som RogerA bifogade ovan...? Tack!
Som sagt har jag inte testat detta. Berätta hur det går.
Se till att sätta rätt sökväg till "bg.gif"
<html>
<body>
<form method="post" action="#">
<input type ="text" name="namn" value="Din bildtext"/>
<input type="submit" value="Skapa bild" />
</form>
<?php
if(isset($_POST["namn"])) {
$text = $_POST["namn"];
$imageback = "bg.gif";
$font = "verdana.ttf";
$getsize = 8;
$size = imagettfbbox($getsize+1, 0, $font, $text);
$image = imagecreatetruecolor(abs($size[2]) + abs($size[0]), abs($size[7]) + abs($size[1]));
if (!isset($_GET["color"])) $gold = imagecolorallocate($image, 206, 20, 20);
else $gold = imagecolorallocate($image, 177, 177, 177);
//$back = ImageColorAllocate($image,255,255,255);
//ImageFilledRectangle($image,0,0,302,20,$back);
$tile = imagecreatefromgif($imageback);
imageSetTile($image,$tile);
imagefill($image,0,0,IMG_COLOR_TILED);
imagettftext($image, $getsize, 0, 0, $getsize+2, $gold, $font, $text);
//header("Content-type: image/gif");
imagegif($image, "$text.gif");
imagedestroy($image);
print '<img src="'.$_POST["namn"].'" alt="testbild" />';
}
?>
</body>
</html>
Hmm..
Warning: imagesettile(): supplied argument is not a valid Image resource in /home/web/domains/hej.se/public_html/test/txtpic.php on line 24
Rad 24: imageSetTile($image,$imageback);
Ändrade i koden lite. Försök igen.
Det funkar fint! Men när jag väljer font-storleken 20 så hamnar delar av texten utanför... Kan man sätta en fast höjd på bilden kanske? Sen så vill jag ha en maxbredd, bilden får inte bli bredare än 300px.
Tack för din hjälp! :bire