note 101537 modified in function.imagettfbbox by danbrown

From: Date: Thu, 23 Dec 2010 13:39:12 +0000
Subject: note 101537 modified in function.imagettfbbox by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-175165@lists.php.net to get a copy of this message
measure bg image size, wrap text to fit image width <?php $mx = imagesx($main_img); $my = imagesy($main_img); //TEXT VARS///////// $main_text = ; $main_text_size = ; $main_text_x = ($mx/2); $main_text_color = imagecolorallocate($main_img, $main_text_red, $main_text_green, $main_text_blue); $words = explode(' ', $main_text); $lines = array($words[0]); $currentLine = 0; for($i = 1; $i < count($words); $i++) { $lineSize = imagettfbbox($main_text_size, 0, $mt_f, $lines[$currentLine] . ' ' . $words[$i]); if($lineSize[2] - $lineSize[0] < $mx) { $lines[$currentLine] .= ' ' . $words[$i]; } else { $currentLine++; $lines[$currentLine] = $words[$i]; } } $line_count = 1; // Loop through the lines and place them on the image foreach ($lines as $line) { $line_box = imagettfbbox($main_text_size, 0, $mt_f, "$line"); $line_width = $line_box[0]+$line_box[2]; $line_height = $line_box[1]-$line_box[7]; $line_margin = ($mx-$line_width)/2; $line_y = (($line_height+12) * $line_count); imagettftext($main_img, $main_t_s, 0, $line_margin, $line_y, $main_text_color, $mt_f, $line); // Increment Y so the next line is below the previous line $line_count ++; } ?> --was-- //measure bg image size, wrap text to fit image width $mx = imagesx($main_img); $my = imagesy($main_img); //TEXT VARS///////// $main_text = ; $main_text_size = ; $main_text_x = ($mx/2); $main_text_color = imagecolorallocate($main_img, $main_text_red, $main_text_green, $main_text_blue); $words = explode(' ', $main_text); $lines = array($words[0]); $currentLine = 0; for($i = 1; $i < count($words); $i++) { $lineSize = imagettfbbox($main_text_size, 0, $mt_f, $lines[$currentLine] . ' ' . $words[$i]); if($lineSize[2] - $lineSize[0] < $mx) { $lines[$currentLine] .= ' ' . $words[$i]; } else { $currentLine++; $lines[$currentLine] = $words[$i]; } } $line_count = 1; // Loop through the lines and place them on the image foreach ($lines as $line) { $line_box = imagettfbbox($main_text_size, 0, $mt_f, "$line"); $line_width = $line_box[0]+$line_box[2]; $line_height = $line_box[1]-$line_box[7]; $line_margin = ($mx-$line_width)/2; $line_y = (($line_height+12) * $line_count); imagettftext($main_img, $main_t_s, 0, $line_margin, $line_y, $main_text_color, $mt_f, $line); // Increment Y so the next line is below the previous line $line_count ++; } http://php.net/manual/en/function.imagettfbbox.php

« previous php.notes (#175165) next »