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

Problem z str_pad()


Rekomendowane odpowiedzi

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

Kontynuuj dyskusję

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

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