Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Generowanie tekstu na obrazie. Skrypt PHP.


Rekomendowane odpowiedzi

Witam, mam taki skrypty napisany nie do konca przeze mnie, bardziej przerobiony, chciałbym zrobic to jakos prosciejszym kodem z wiekszymi mozliwosciami, generalnie chodzi mi o wygenerowanie czarneglo tla, na wierzch obrazek, oraz 2 teksty wyśrodkowane u góry i nadole (coś ala demotywatory), ponizej zamieszcze skrypt jaki udało mi sie przerobić pod swoje możliwości.

<?php

    function pc_ImageTTFCenter($image, $text, $font, $size) 
    {
        $box = ImageTTFBBox($size, 0, $font, $text);
        $xi = ImageSX($image);
        $xr = abs(max($box[2], $box[4]));
        $x = intval(($xi - $xr) / 2);
        return array($x);
    }

    $text = "Tutaj testowy tekst jeden a potrzebuje dwa na czarnym tle i na obrazku w ramce";

    $font_size = 18; // Rozmiar czcionki  M: 18px D: 24px
    $text_angle = 0; // Kąt tekstu
    $font = "arial.ttf"; // Rodzaj czcionki
    $razy = 30; // Wysokość czcionki z odstepem  M: 30px D: 40px
    $margin_top = 23; // Górny margines  M: 23px D: 26px
    $width = 560; // Maksymalna szerokośc
    $text_width = 45; // Liczba znaków w jednej lini  M: 45px D: 35px
    $padding = 50; // Marginesy góra/dół

    $the_box = imagettfbbox($font_size, $text_angle, $font, $text);

    $wordwrap = wordwrap($text, $text_width, "|", true);
    $count = count(explode("|", $wordwrap));

    $height = $count * $razy;

    $im = imagecreatetruecolor($width, $height + $padding);
    imagefill($im, imagecolorallocate($im, 46, 46, 46));
    $txtColor = imageColorAllocate($im, 255, 255, 255); 
    $out_text = explode("|", wordwrap($wordwrap, $text_width, "|", true));

    $y = $margin_top + ($padding / 2);

    foreach ($out_text as $value)
    {
        list($x) = pc_ImageTTFCenter($im, $value, $font, $font_size);
        imagettftext($im, $font_size, $text_angle, $x, $y, $txtColor, $font, $value);
        $y += $razy;
    }

   header('Content-Type: image/jpeg');

   imagejpeg($im);
   imagedestory($im);

?>

Tutaj mam taki kod ogólny przy 2 tekstach (tutaj akurat wiekszy u góry i mniejszy na dole) troche sie rozsypuje wygenerowany obrazek, bardzo bym prosił o jakas pomoc. Z góry dziękuję 🙂

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...