Объединение двух изображений с помощью PHP GD и функций изображения - PullRequest
0 голосов
/ 04 марта 2019

Я создаю плагин, в котором я использую файл шрифта для генерации текста, затем преобразую его в изображение и прикрепляю 2 цепочки с обеих сторон, чтобы придать ему правильный вид.

Nameplate Image

Но проблема в том, что цепочки с обеих сторон задаются позицией, так что, очевидно, не будет касаться текста для каждого алфавита.

Любые разные решения, чтобы сделать этокак предполагалось.Я публикую текущий код, пожалуйста, дайте мне знать, как это исправить и привязать цепочки к начальному и конечному алфавиту.

$text  = isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : '';
$color  = isset( $_POST['color'] ) ? sanitize_text_field( wp_unslash( $_POST['color'] ) ) : '';
$st yle  = isset( $_POST['style'] ) ? sanitize_text_field( wp_unslash( $_POST['style'] ) ) : '';
$align  = isset( $_POST['align'] ) ? sanitize_text_field( wp_unslash( $_POST['align'] ) ) : '';

ob_start();

// Set the content-type
header('Content-Type: image/png');
$file_id = get_field( "style", $style );
$font = get_attached_file( $file_id['id'] );

// Create the image
$im = imagecreatetruecolor(400, 400);
$color_code = imagecolorallocate($im, 192, 192, 192);

// Create some colors
$grey = imagecolorallocate($im, 128, 128, 128);
$white = imagecolorallocate($im, 255, 255, 255);
imagealphablending($im, false);
$transparency = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $transparency);
imagesavealpha($im, true);

list($width, $height) = getimagesize($chain_link_l);
$chain_l = imagecreatefrompng($chain_link_l);
$chain_r = imagecreatefrompng($chain_link_r);

$font_size = kp_create_fontsize(60, $font, $text, $align);

// Get Bounding Box Size
$text_box = imagettfbbox($font_size, 0,$font,$text);

// Get your Text Width and Height
$text_width = $text_box[2]-$text_box[0];
$text_height = $text_box[7]-$text_box[1];

// Calculate coordinates of the text
$x = 200 - ($text_width/2);
$y = 250 - ($text_height/2);
$chain_l_x = $x - 80 + 15 ;
$chain_r_x = $x + $text_width - 23 ;

imagecopyresampled($im, $chain_l, $chain_l_x, 50, 0, 0, 100, 200, $width, $height);
imagecopyresampled($im, $chain_r, $chain_r_x, 50, 0, 0, 100, 200, $width, $height);

// Add the text
imagettftext($im, $font_size, 0, $x+2, $y, $grey, $font, $text);
imagettftext($im, $font_size, 0, $x, $y, $color_code, $font, $text);

imagepng($im);
$imagedata['src'] = base64_encode ( ob_get_contents() );
ob_get_clean();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...