Avatar billede binauhus Nybegynder
17. september 2011 - 16:42 Der er 12 kommentarer

Skrive input text på billede

Hej,

Jeg søger et script der kan skrive en input text på et billede (png).

Scriptet skal virke som følger:
- input field hvor man kan skrive text
- teksten skrives centreret med en bestemt skrifttype og størrelse  i et png billede (under et logo) med transparent baggrund
- det færdige png billede vises så brugeren kan downloade det

Jeg har forgæves søgt efter dette på nettet med ikke fundet noget pasende.

Det nærmeste jeg har fundet er dette men mangler dog et input field til tekst:
http://terriswallow.com/weblog/2007/writing-text-to-images-with-php/


/Binauhus
Avatar billede jsc Nybegynder
17. september 2011 - 18:28 #1
Du kunne jo prøve dette her. Det har jeg anvendt til noget autogenerering af billeder.

<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im    = imagecreatefrompng($_GET['pic']);
$color = imagecolorallocate($im, $_GET['color']);
$px    = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, $_GET['textsize1'], $px, $_GET['textsize2'], $string, $color);
imagepng($im);
imagedestroy($im);

?>

filnavn?text=tekst&color=0,0,0&textsize1=12&textsize2=12&pic=billede.png

/jsc
Avatar billede kjeldsted Novice
17. september 2011 - 18:33 #2
Og lige for at folk der ikke kender imagestring kan følge med. Anden parameter (hér brugt ved værdien $_GET['textsize1']) er font-type. Der findes 5 forudindstillede fonts (1-5), og ellers kan der angives en font der er loadet via. imageloadfont().

www.php.net/imagestring
Avatar billede binauhus Nybegynder
19. september 2011 - 14:00 #3
Tak for svar.

Jeg er ikke så skarp i PHP og havde derfor håbet på et færdigt script jeg kunne rette til.

JSC: Hvordan skal denne linje inkorporeres i kilden?
filnavn?text=tekst&color=0,0,0&textsize1=12&textsize2=12&pic=billede.png
Avatar billede jsc Nybegynder
19. september 2011 - 14:12 #4
Du lægger kodeeksemplet i en php-fil - eksempel:

php.php:
--------
<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im    = imagecreatefrompng($_GET['pic']);
$color = imagecolorallocate($im, $_GET['color']);
$px    = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, $_GET['textsize1'], $px, $_GET['textsize2'], $string, $color);
imagepng($im);
imagedestroy($im);

?>

--------

SÅ lægger du et billede i samme mappe på serveren som php.php. Billedet kan f.eks. hedde billede.png.

Herefter skriver du URL'en i din browser:
http://domain.com/folder/php.php?text=tekst&color=0,0,0&textsize1=12&textsize2=12&pic=billede.png

Siden loades og du skulle gerne se dit billede.png med noget tekst ovenpå.


I tilfælde af at du ønsker at anvende billedet på en hjemmeside sammen med tekst kan du jo f.eks. anvende URL'en i et IFRAME:

<iframe src="php.php?text=tekst&color=0,0,0&textsize1=12&textsize2=12&pic=billede.png" width="100" height="100"></iframe>

Du vil nu være istand til at skrive tekst "udenom" IFRAME'en.

/jsc
Avatar billede binauhus Nybegynder
19. september 2011 - 14:54 #5
Mange tak, men ikke helt det jeg søgte.

Det skal være muligt for brugeren at indtaste en tekst som skrives på billedet med en bestemt skrifttype.
Avatar billede jsc Nybegynder
19. september 2011 - 16:04 #6
du kunne jo prøve at skrive dette stykke kode i en ganske almindelig html-fil og lægge filen i samme mappe som php.php og billede.png

index.html:
-------
<form action="php.php" method="post">
<input type="hidden" name="color" value="0,0,0" />
<input type="hidden" name="textsize1" value="12" />
<input type="hidden" name="textsize2" value="12" />
<input type="hidden" name="pic" value="billede.png" />
<input type="text" name="text" value="Skriv din billedetekst her" />
<input type="submit" name="submit" value="Generer billede" />
</form>
-------

det kunne være det ville virke.

/jsc
Avatar billede binauhus Nybegynder
19. september 2011 - 16:25 #7
Så ligner det noget! :)

Dog er det alene "tekst" der kommer til at stå lige meget hvad jeg skriver i feltet og jeg kan ikke få teksten til at skifte farve ved at angive andre tal end 0,0,0
Avatar billede jsc Nybegynder
19. september 2011 - 16:32 #8
er det noget man kan se via et link?

/jsc
Avatar billede binauhus Nybegynder
19. september 2011 - 16:48 #9
Avatar billede binauhus Nybegynder
19. september 2011 - 16:49 #10
Den skriver "Copenhagen" som er den tekst jeg har sat ind i kilden i stedet for "tekst"
Avatar billede jsc Nybegynder
19. september 2011 - 16:54 #11
istedet for at linke "Generer billede"-knappen til index.php skal du linke den til test2.php

koden skal se sådan ud:

index.html:
------
<form action="test2.php" method="post">
<input type="hidden" name="color" value="0,0,0" />
<input type="hidden" name="textsize1" value="12" />
<input type="hidden" name="textsize2" value="12" />
<input type="hidden" name="pic" value="billede.png" />
<input type="text" name="text" value="Skriv din billedetekst her" />
<input type="submit" name="submit" value="Generer billede" />
</form>
------

/jsc
Avatar billede binauhus Nybegynder
19. september 2011 - 19:40 #12
Jeg får da følgende fejl:
Billedet "http://binauhus.dk/test/php.php" kan ikke vises, da det indeholder fejl.


Jeg har gennemlæst og tråden og har nu følgende filer:

index.html
--------
<form action="php.php" method="post">
<input type="hidden" name="color" value="0,0,0" />
<input type="hidden" name="textsize1" value="12" />
<input type="hidden" name="textsize2" value="12" />
<input type="hidden" name="pic" value="billede.png" />
<input type="text" name="text" value="Skriv din billedetekst her" />
<input type="submit" name="submit" value="Generer billede" />
</form>
--------

og


php.php
--------
<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im    = imagecreatefrompng($_GET['pic']);
$color = imagecolorallocate($im, $_GET['color']);
$px    = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, $_GET['textsize1'], $px, $_GET['textsize2'], $string, $color);
imagepng($im);
imagedestroy($im);

?>
--------


http://binauhus.dk/test/index.html
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

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