PHP GD библиотека отображает черный экран с белым окном вместо изображения - PullRequest
0 голосов
/ 14 апреля 2020

Я довольно новичок в PHP и в настоящее время использую XAMPP. Я хотел создать изображение с использованием библиотеки gd, но потом заметил, что все, что я получил, это черный экран с небольшим белым контуром в середине. Это вывод, несмотря на любой используемый код. Я пробовал разные примеры кода с разных сайтов безрезультатно. Я подтвердил, что библиотека GD была включена. Я удалил и переустановил xampp. Я также искал похожие вопросы, но ни одно из предложенных решений не работает для меня.

вот мой код

 session_start();

 // Set some important CAPTCHA constants
 define('CAPTCHA_NUMCHARS', 6);  // number of characters in pass-phrase
define('CAPTCHA_WIDTH', 100);   // width of image
define('CAPTCHA_HEIGHT', 25);   // height of image

// Generate the random pass-phrase
$pass_phrase = "";
for ($i = 0; $i < CAPTCHA_NUMCHARS; $i++) {
  $pass_phrase .= chr(rand(97, 122));
}

// Store the encrypted pass-phrase in a session variable
$_SESSION['pass_phrase'] = SHA1($pass_phrase);

// Create the image
$img = imagecreatetruecolor(CAPTCHA_WIDTH, CAPTCHA_HEIGHT); 
$bg_color = imagecolorallocate($img, 255, 255, 255);     // white
$text_color = imagecolorallocate($img, 0, 0, 0);         // black
$graphic_color = imagecolorallocate($img, 64, 64, 64);   // dark gray

// Fill the background
imagefilledrectangle($img, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT, $bg_color);

// Draw some random lines
for ($i = 0; $i < 5; $i++) {
  imageline($img, 0, rand() % CAPTCHA_HEIGHT, CAPTCHA_WIDTH, rand() % 
CAPTCHA_HEIGHT, 
  $graphic_color);
}

// Sprinkle in some random dots
for ($i = 0; $i < 50; $i++) {
  imagesetpixel($img, rand() % CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, 
$graphic_color);
}
// Draw the pass-phrase string
imagettftext($img, 18, 0, 5, CAPTCHA_HEIGHT - 5, $text_color, 'Courier New Bold.ttf', $pass_phrase);

// Output the image as a PNG using a header
header("Content-type: image/png");
imagepng($img);

// Clean up
imagedestroy($img);
  ?>

Black screen error image

Редактировать: I удалось определить проблему в строке заголовка (Content-type). Все еще не нашли решение еще.

1 Ответ

0 голосов
/ 14 апреля 2020

После часов рыскания по разным форумам. Я пришел, чтобы понять проблему лучше. Проблема не в библиотеке gd, а в строке заголовка (Content-type)

Когда я решаю создать файл изображения вместо отправки изображения через заголовок. Правильно отображается.

Как только я понял это, поиск решения стал легче, так как теперь я ищу решение в нужном месте.

Проблема в том, что мой сценарий PHP испускает метку порядка байтов UTF-8 (EF BB BF) перед выводом содержимого изображения PNG.

Решение, которое работало для меня, заключалось в поместите ob_clean () перед строкой заголовка.

Для получения дополнительной информации см. Ссылку ниже. { ссылка }

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

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

...