使用 PHP 向图像添加文本
Adding text to images with PHP
我 运行 遇到了向图像添加自定义文本的一些问题,我想做的是让 3 行文本居中。但是,居中文本位于图像的右侧,而不是图像的中心。这是我到目前为止添加的文本,但我需要让文本与图像上显示的线居中对齐。
// Variables
$img = LoadJpeg('img/custom-image.jpg');
$orig_width = imagesx($img);
$orig_height = imagesy($img);
$width = 2500;
$font_path = 'font/ArialBlack.ttf';
$text_line_1 = $_GET['series'];
$text_line_2 = $_GET['custom'];
$text_line_3 = $_GET['model'];
// Calc the new height
$height = (($orig_height * $width) / $orig_width);
// Create new image to display
$new_image = imagecreatetruecolor($width, $height);
// Create some colors
$white = imagecolorallocate($new_image, 255, 255, 255);
// Create new blank image with changed dimensions
imagecopyresized($new_image, $img,0, 0, 0, 0, $width, $height, $orig_width, $orig_height);
// Add text to image
imagettftext($new_image, 13,0, 2150,72, $white, $font_path, $text_line_1);
imagettftext($new_image, 13,0, 2150,92, $white, $font_path, $text_line_2);
imagettftext($new_image, 13,0, 2150,112, $white, $font_path, $text_line_3);
// Print image
imagejpeg($new_image);
imagejpeg($img);
imagedestroy($img);
我也想根据 url 设置宽度变量,我可以,但我不确定如何调整文本大小以匹配调整后的图像。如有任何帮助,我们将不胜感激。
Current Placement of Text
What I am wanting
您想为此使用 imagettfbbox() 来计算水平偏移:
$bbox = imagettfbbox(13, 0, $font_path, $text_line_1);
$xOffset = ($bbox[2] - $bbox[0]) / 2;
现在只需从您想要的位置减去偏移量即可。
我 运行 遇到了向图像添加自定义文本的一些问题,我想做的是让 3 行文本居中。但是,居中文本位于图像的右侧,而不是图像的中心。这是我到目前为止添加的文本,但我需要让文本与图像上显示的线居中对齐。
// Variables
$img = LoadJpeg('img/custom-image.jpg');
$orig_width = imagesx($img);
$orig_height = imagesy($img);
$width = 2500;
$font_path = 'font/ArialBlack.ttf';
$text_line_1 = $_GET['series'];
$text_line_2 = $_GET['custom'];
$text_line_3 = $_GET['model'];
// Calc the new height
$height = (($orig_height * $width) / $orig_width);
// Create new image to display
$new_image = imagecreatetruecolor($width, $height);
// Create some colors
$white = imagecolorallocate($new_image, 255, 255, 255);
// Create new blank image with changed dimensions
imagecopyresized($new_image, $img,0, 0, 0, 0, $width, $height, $orig_width, $orig_height);
// Add text to image
imagettftext($new_image, 13,0, 2150,72, $white, $font_path, $text_line_1);
imagettftext($new_image, 13,0, 2150,92, $white, $font_path, $text_line_2);
imagettftext($new_image, 13,0, 2150,112, $white, $font_path, $text_line_3);
// Print image
imagejpeg($new_image);
imagejpeg($img);
imagedestroy($img);
我也想根据 url 设置宽度变量,我可以,但我不确定如何调整文本大小以匹配调整后的图像。如有任何帮助,我们将不胜感激。
Current Placement of Text
What I am wanting
您想为此使用 imagettfbbox() 来计算水平偏移:
$bbox = imagettfbbox(13, 0, $font_path, $text_line_1);
$xOffset = ($bbox[2] - $bbox[0]) / 2;
现在只需从您想要的位置减去偏移量即可。