我使用以下PHP代码使用PHP代码在图像上使用背景颜色编写文本。
但它正在添加图片背景颜色的文字。我需要将文字添加到图像下面的背景颜色 。我怎么能用PHP做到这一点?
PHP代码:
// Create Image From Existing File
$jpg_image = imagecreatefromjpeg('02.JPG');
$orig_width = imagesx($jpg_image);
$orig_height = imagesy($jpg_image);
// Allocate A Color For The background
$bcolor=imagecolorallocate($jpg_image, 255, 255, 255);
//Create background
imagefilledrectangle($jpg_image, 0, $orig_height*0.9, $orig_width, $orig_height, $bcolor);
// Set Path to Font File
$font_path = realpath(dirname(__FILE__)).'/arial.ttf';
// Set Text to Be Printed On Image
$text = "New Content Goes to here";
// Allocate A Color For The Text
$color = imagecolorallocate($jpg_image, 0, 0, 0);
// Print Text On Image
imagettftext($jpg_image, 20, 0, 10, $orig_height-10, $color, $font_path, $text);
//Set the Content Type
header('Content-type: image/jpg');
// Send Image to Browser
imagejpeg($jpg_image);
// Clear Memory
imagedestroy($jpg_image);
图片:
答案 0 :(得分:1)
查看代码,您似乎想要的是展开图像画布,然后在其下面写下文本。
您无法将图像下方的文字添加为单独的(非图像)实体,因为您的HTML标题只输出图像。
因此;在图像上添加文字:
Vwallah!
// Create Image From Existing File
$jpg_image = imagecreatefromjpeg('02.JPG');
$orig_width = imagesx($jpg_image);
$orig_height = imagesy($jpg_image);
// Create your canvas containing both image and text
$canvas = imagecreatetruecolor($orig_width, ($orig_height + 40));
// Allocate A Color For The background
$bcolor = imagecolorallocate($canvas, 255, 255, 255);
// Add background colour into the canvas
imagefilledrectangle( $canvas, 0, 0, $orig_width, ($orig_height + 40), $bcolor);
// Save image to the new canvas
imagecopyresampled ( $canvas , $jpg_image , 0 , 0 , 0 , 0, $orig_width , $orig_height , $orig_width , $orig_height )
// Tidy up:
imagedestroy($jpg_image);
// Set Path to Font File
$font_path = realpath(dirname(__FILE__)).'/arial.ttf';
// Set Text to Be Printed On Image
$text = "New Content Goes to here";
// Allocate A Color For The Text
$color = imagecolorallocate($canvas, 0, 0, 0);
// Print Text On Image
imagettftext($canvas, 20, 0, 10, $orig_height-10, $color, $font_path, $text);
//Set the Content Type
header('Content-type: image/jpg');
imagejpeg($canvas);
imagedestroy($canvas);
如果要在非图像媒体(如网站)上查看,这不是最好的方法。最好使用HTML5 <figure>
和<figcaption>
元素。
请注意,如果要添加的标题文本是多行等,则需要调整画布的额外大小。此外,换行可能不会自然发生,需要手动设置。
这通常是内存效率低下的,并且取决于您希望实现的结果类型,将会有更好的方法。
另一种(非PHP)更有效的方法是使用SVG图形。