Jak zrobić skrypt generujący napis w obrazek


(Fajlip4) #1

Witam!

Potrzebuje zrobić skrypt "generujący napis w obrazek".

Znalazłem jedynie generator napisów ale chciałbym w nim zmienić by zapisywał wygenerowany tekst do obrazka.

Czyli mógł bym go czytać ze ścieżki http://www.strona.pl/wygenerowany_obrazek.jpg

<?php

if(!isset($_POST['generuj']))

{

echo '


';

} 

elseif(isset($_POST['generuj'])) 

{

header('Content-type: image/png');


$img = ImageCreate(300,100); #Tworzy obrazek


$kolor_bialy = ImageColorAllocate($img, 255, 255, 255);

$kolor_czarny = ImageColorAllocate($img, 0, 0, 0);


ImageFill($img, 0, 0, $kolor_bialy);

ImageString($img, 30, 15, 30, $_POST['napis'], $kolor_czarny);


ImagePNG($img);

ImageDestroy($img);

} 

?>

Tutaj działający skrypt

Pozdrawiam i proszę o pomoc!


(mrbungle) #2

wystarczy luknąć w manual IMAGEPNG

http://php.net/manual/en/function.imagepng.php

...


ImagePNG($img, 'nazwa pliku.png');


...

(Przemek El) #3

ja zrobiłem na szybko coś takiego: http://przemek-el.pl/obrazek.php

kod:

<?php

    if(!isset($_POST['generuj']))

    {

    echo '


';

    }

    elseif(isset($_POST['generuj']))

    {

header('Content-type: image/png');

$img = imagecreatefrompng('Lilie_wodne.png');

    $kolor_bialy = ImageColorAllocate($img, 255, 255, 255);


    ImageString($img, 60, 70, 80, $_POST['napis'], $kolor_bialy);


    ImagePNG($img);

    ImageDestroy($img);

    }

    ?>

możliwe że nie jest to najprostszy sposób ale na pewno działający


(Fajlip4) #4

W obecnej chwili obrazek i tekst generowane są do strony:

http://www.strona.pl/wygenerowany_obrazek.php

Ale chodziło mi o to by tekst i tło zapisywało się do obrazu.

Czyli mógłbym go odczytać z rozszeżenia .jpg, na przykład:

Jaką funkcją zrobić taki oto efekt?


(Przemek El) #5
<?php

$nazwa="nazwa.png";

if(!isset($_POST['generuj']))

{

echo '


';

}

elseif(isset($_POST['generuj']))

{

//header('Content-type: image/png');


$img = ImageCreate(300,100); #Tworzy obrazek


$kolor_bialy = ImageColorAllocate($img, 255, 255, 255);

$kolor_czarny = ImageColorAllocate($img, 0, 0, 0);


ImageFill($img, 0, 0, $kolor_bialy);

ImageString($img, 30, 15, 30, $_POST['napis'], $kolor_czarny);

imagepng($img, $nazwa);

//imagepng($img);

ImageDestroy($img);

echo "
";

echo "LINK do Obrazka: $_SERVER[HTTP_HOST]/$nazwa";

}



?>

[/code]

link do sprawdzenia: http://przemek-el.pl/obrazek2.php obrazek jest pod adresem: http://przemek-el.pl/nazwa.png

Powiedz mi jeszcze, jakiego rodzaju pliki chcesz tworzyć? JPG, PNG, GIF???


(Grz Bogusz) #6

Jeśli masz na serwerze wgrany ImageMagick, skorzystaj z niego.

Tutaj masz ładny opis, jak to zrobić http://valokuva.org/?p=59


(Fajlip4) #7

A gdybym chciał dodać do tego czcionkę?

Wiem że muszę zrobić to za pomocą imagettftext

Tutaj jest do tego instrukcja...

Próbowałem z tym manualem coś tworzyć ale nic nie wyszło..


(Przemek El) #8

masz taki przykład pod tym linkiem co wysłałeś:

<?php

// Set the content-type

header('Content-type: image/png');


// Create the image

$im = imagecreatetruecolor(400, 30);


// Create some colors

$white = imagecolorallocate($im, 255, 255, 255);

$grey = imagecolorallocate($im, 128, 128, 128);

$black = imagecolorallocate($im, 0, 0, 0);

imagefilledrectangle($im, 0, 0, 399, 29, $white);


// The text to draw

$text = 'Testing...';

// Replace path by your own font path

$font = 'arial.ttf';


// Add some shadow to the text

imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);


// Add the text

imagettftext($im, 20, 0, 10, 20, $black, $font, $text);


// Using imagepng() results in clearer text compared with imagejpeg()

imagepng($im);

imagedestroy($im);

?>

powiedz czego nie rozumiesz albo jaki bład lub problem dokładnie masz...


(Fajlip4) #9

No to tak..

Wrzucam do jednego katalogu czcionkę "arial.ttf" i "index.php" z zawartym skryptem..

Otwieram stronę i wyświetla mi się błąd o treści:

"Obrazek "http://www.strona-testowa-mistrzu4.yoyo.pl/test/index.php" nie może zostać wyświetlony, ponieważ zawiera błędy."

Nie wiem co tutaj może nie grać..

Proszę o pomoc


(karololszak) #10

Gdy wyświetlasz coś przed (czy to przez echo/print, czy kod HTML), to nie możesz dać nagłówka o tym, że to jest obrazek - ergo, albo zrób dwa skrypty, albo pobaw się warunkami (if), tak aby wtedy gdy obrazek ma być wyświetlony nic przed się nie wyświetlało..

A yoyo.pl nie jest dobrym hostingiem do testowania takich rzeczy - doklejają swój reklamowy kod, dlatego Tobie nie działa tak jak powinno...


(Przemek El) #11

a napisz tu kod strony to postaram się pomóc :))

karololszak , mam wrażenie że to nie jest tego wina iż jest coś przed, bo jak umieścisz coś przed nagłówkiem to będzie błąd:"Warning: Cannot modify header information - headers already sent by(...)",


(Fajlip4) #12

Wstawiam ten sam kod który podałeś wyżej.. :slight_smile:


(Przemek El) #13

http://przemek-el.pl/obrazek.zip - ściągnij to, i wrzuć na swój serwer pliki które tam się znajdują. U mnie to działa a efekt możesz zobaczyć na http://przemek-el.pl/obrazek3.php. Jeśli u Ciebie to nie zadziała to znaczy że coś jest nie tak z serwerem :confused: bo ja sprawdzałem na dwóch i działa :slight_smile: