Marcin Guguła 29 Maja 2020 29 Maja 2020 Witam, generalnie posiadam napisany taki prosty skrypt lecz nie wyśrodkowuje mi kolejnych linijek które są metodą str_pad <?php function generate($text11, $text22) { list($image_width, $image_height) = getimagesize("http://www.miastomemow.pl/uploads/mem1.jpg"); $text1 = preg_replace('/\s\s+/', ' ', $text11); $text2 = preg_replace('/\s\s+/', ' ', $text22); $font = "impact.ttf"; $watermark_margins = 10; $margins_to_image_ratio = 0.04; $font_to_image_ratio = 0.03; $font_size = round($font_to_image_ratio * $image_width); $margin = round($margins_to_image_ratio * $image_width); $text1_params = get_text_params($text1,$image_width,$margin,$font,$font_size); $text2_params = get_text_params($text2,$image_width,$margin,$font,$font_size); $im = @imagecreatefromstring(file_get_contents("http://www.miastomemow.pl/uploads/mem1.jpg")); $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); // watermark file selected - watermarking... $overlay_gd_image = imagecreatefromgif("http://pomyslynanude.pl/demo/tmp/php.gif"); $overlay_width = imagesx($overlay_gd_image); $overlay_height = imagesy($overlay_gd_image); $merge_result = imagecopymerge( $im, $overlay_gd_image, $image_width - $overlay_width - $watermark_margins, $image_height - $overlay_height - $watermark_margins, 0, 0, $overlay_width, $overlay_height, 100 ); imagedestroy($overlay_gd_image); // top text imagettftext($im, $font_size, 0, $text1_params['centered_start'], $font_size+$margin, $black, $font, $text1_params['text'] ); imagettftext($im, $font_size, 0, $text1_params['centered_start']-2, $font_size+$margin-2, $white, $font, $text1_params['text'] ); // bottom text imagettftext($im, $font_size, 0, $text2_params['centered_start'] , $image_height-$text2_params['height']+$font_size+$margin, $black, $font, $text2_params['text'] ); imagettftext($im, $font_size, 0, $text2_params['centered_start']-2, $image_height-$text2_params['height']+$font_size+$margin-2, $white, $font, $text2_params['text'] ); header('Content-Type: image/jpeg'); imagejpeg($im, null, 100); imagedestroy($im); return $fname; return $text11; return $text22; } function get_text_params($text,$width,$margin,$font,$font_size) { $rv = array(); $text_a = explode(' ', $text); $text_new = ''; foreach($text_a as $word) { $box = imagettfbbox($font_size, 0, $font, $text_new.' '.$word); if ($box[2] > $width - $margin * 2) { $text_new .= "\n" . $word; } else { $text_new .= " " . $word; } } $text_new = align_center_img_txt($text_new); $box = imagettfbbox($font_size, 0, $font, $text_new); $rv['text'] = $text_new; $rv['height'] = $box[1] + $font_size + $margin * 2; $rv['centered_start'] = ceil(($width - $box[2]) / 2); return $rv; } function align_center_img_txt($text_new) { $text_new = trim($text_new); $lines = array(); foreach (explode("\n", wordwrap($text_new, $len=80)) as $line) { $lines[] = str_pad($line, $len, '-', STR_PAD_BOTH); $text_new = implode("\n", $lines); } return $text_new; } $tekst1 = "Testowy tekst ktory dziala dobrze"; $tekst2 = "Tutaj dłuższy testowy tekst który próbuje wyśrodkować testowy tekst ktory juz nie działa tak jak powinien juz nie działa tak jak powinien juz nie działa tak jak powinien"; generate($tekst1, $tekst2); ?> Dla przykładu dałem myślnik zamiast spacji. Wydaje mi sie że nie wiele brakuje do poprawnego działania tego kodu, tylko nie wiem co w nim nie tak. Z Góry dziękuję za pomoc, pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kontynuuj dyskusję
Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.