Как добавить переменные WP в GD imagepng - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь добавить зарегистрированный идентификатор пользователя (wordpress) к изображению GD.

Когда я использую константу, она правильно отображает png, при вызове переменной она показывает ссылку на разорванное изображение.

Вызов осуществляется через шорткод:

/* ================== GET PIC USER ================== */
function get_pic_user($atts) {
$myphp_folder = get_stylesheet_directory_uri() . '/make-pic.php';
$html = '<img src="'.$myphp_folder.'" alt="Image created by a PHP script" width="1000" height="768" align="middle">';
return $html;
}
add_shortcode( 'display_get_pic_user', 'get_pic_user' );

PHP за make-pic.php:

<?php
$user = wp_get_current_user();
$string_user = $user->id;
$im = imagecreatefrompng("../my_user_pic.png");
header("Content-type: image/png");
$color = imagecolorallocate($im, 51, 51, 51);
imagestring($im, 21, 500, 350, $string_user, $color);
imagepng($im);
imagedestroy($im);
exit;

Так что это работает:

<?php
$string_user = 15;
$im = imagecreatefrompng("../my_user_pic.png");

а это не так:

<?php
$user = wp_get_current_user();
$string_user = $user->id;
$im = imagecreatefrompng("../my_user_pic.png");

Любые предложения будут оценены.

Спасибо

1 Ответ

0 голосов
/ 21 ноября 2018

После добавления нескольких REQUIRE и других решений проблемы все равно проявляются.Рабочим решением, которое я придумал, было добавление IMAGEPNG просто встраиваемым в код, но с использованием OB_START / OB_GET_CLEAN.Следующие работы:

Изображение по-прежнему вызывается со страницы с коротким кодом [display_get_pic_user].Код за ним:

function get_pic_user() {
    $user = wp_get_current_user();
    $string_user = $user->id;
    $im = imagecreatefrompng("../my_user_pic.png");
    $color = imagecolorallocate($im, 51, 51, 51);
    imagestring($im, 21, 500, 350, $string_user, $color);
    ob_start(); 
        imagepng($im);
    $rawImageBytes = ob_get_clean();
    $html = "<img src='data:image/png;base64," . base64_encode( $rawImageBytes ) . "' align=middle/>";
    imagedestroy($im);
    return $html;
}
add_shortcode( 'display_get_pic_user', 'get_pic_user' );
...