Пару месяцев назад я включил GD на локальном хосте, чтобы немного поиграть с ним, использовал различные сценарии, найденные в Интернете, чтобы лучше понять, что он делает, все хорошо и хорошо.
Но теперь я чувствую, что я впадаю в безумие, потому что при попытке повторить вышеизложенное с одинаковыми сценариями я получаю ошибки заголовка, как на локальном, так и на удаленном хосте. Я полагаю, что я как-то совсем забыл, как все сделать правильно, поэтому мне нужно немного освежить в этом информацию.
Например, это был первый скрипт, который я когда-либо пробовал:
$my_img = imagecreate( 200, 80 );
$background = imagecolorallocate( $my_img, 0, 0, 255 );
$text_colour = imagecolorallocate( $my_img, 255, 255, 0 );
$line_colour = imagecolorallocate( $my_img, 128, 255, 0 );
imagestring( $my_img, 4, 30, 25, "thesitewizard.com",
$text_colour );
imagesetthickness ( $my_img, 5 );
imageline( $my_img, 30, 45, 165, 45, $line_colour );
header( "Content-type: image/png" );
imagepng( $my_img );
imagecolordeallocate( $line_color );
imagecolordeallocate( $text_color );
imagecolordeallocate( $background );
imagedestroy( $my_img );
Источник
Тогда работал нормально, теперь, когда я запускаю его, я получаю это:
Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод начался с H: \ xampp \ htdocs \ tests \ script.php: 1) в H: \ xampp \ htdocs \ tests \ script.php в строке 11
PNG IHDR P ! # PLTE M ) B IDATH 1 0EA N : 8QJNdZ ��! � ���k�Z⊜���k��g�˕��|K$�M��|)��$ů8DfRQB���-��[I��?tźR�+���%�"��Ut)(�K�@dF�e�zKF9&�g|C7i��d?��\G�Y � �3y�Ƌ�_�%�����IEND�B
Предупреждение: неверный счетчик параметров для imagecolordeallocate () в строке H: \ xampp \ htdocs \ tests \ script.php в строке 13
Предупреждение: неверный счетчик параметров для imagecolordeallocate () в H: \ xampp \ htdocs \ tests \ script.php в строке 14
Предупреждение: неверный счетчик параметров для imagecolordeallocate () в H: \ xampp \ htdocs \ tests \ script.php в строке 15
То же самое для второго скрипта, который я когда-либо пробовал:
// create a 200*200 image
$img = imagecreatetruecolor(200, 200);
// allocate some colors
$white = imagecolorallocate($img, 255, 255, 255);
$red = imagecolorallocate($img, 255, 0, 0);
$green = imagecolorallocate($img, 0, 255, 0);
$blue = imagecolorallocate($img, 0, 0, 255);
// draw the head
imagearc($img, 100, 100, 200, 200, 0, 360, $white);
// mouth
imagearc($img, 100, 100, 150, 150, 25, 155, $red);
// left and then the right eye
imagearc($img, 60, 75, 50, 50, 0, 360, $green);
imagearc($img, 140, 75, 50, 50, 0, 360, $blue);
// output image in the browser
header("Content-type: image/png");
imagepng($img);
// free memory
imagedestroy($img);
Источник
Что теперь выводит:
Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод начался с H: \ xampp \ htdocs \ tests \ script.php: 1) в H: \ xampp \ htdocs \ tests \ script.php в строке 22
PNG IHDR ": 9 gIDATx v H a < 4Ƹ ܕ : / { v } ZC (~ ҆Uj1jƖ ~) у [xJW + / nq9) eɽ? NQ% Pfgf s + I ; I l 2s -R u 9 b } H d B v R 2 Kr h u v 8 y U | ^ O T ' : I * R! r % Z $ _ ?L ʴVd W U ' tk 2 \ XA 5 s ϔGL0 Q : 0O | M W j ܼ C U} ՚ FŹǂ UO ֝ ά OW z k N " 1F " ls {r ? @ / v ZSw1i ? I 8 ] C A xN? Xw 죙 ۮ 9 - & C h N "r B ! ��j�Ǹ�_"ե>�Љ�u��q����9ɫ�T��5�s0*���*xݣ> �X!�w�����R�u �~�-O7�"�� <��·v���K��i�;�Dv��c��P�q��h,)~C��w���
9 ����q�5���v&h,��� & Kx \ '7LF. -B �Ƃ�ğ'� ^Ajw�1�X0��X"�*��z�.�&"+|{��v/a+0�1o�i0G!l�~�o�+_�� �_��� 8�r|��F���k��!������}>��Ǟ7Xbb=�]�Rd��1��f�d�}�Nـ�k�ۉ���[5�k��6��y��I��jc�~/��˭N�ڍ�� �s�����4L�X0Ac��4L�X0����;�a�Ƃ &h,���
осел% кв, Nh, �Ƃ1���=�V�h,���
, | c ? L, �Ƃn�pϮs<&��ơ"��bq2�tX��w�0��h��bb�^����4�¿�+���; �p1�\�_����ܶ�\o�Z�$����Yxz˟Q�O:��
" 8 Ov | 78 W Ը Z X (p \ = ? Y :A: N ޚ 4 {~ b [S $ UO ᡷ a = [ = ֩ Z_6 w | } CBf " K $$ { 3 E ^ vMϨc $ ڻ f Pu + W + ; { L 6D ލ w G J Tcrln_JE] | т} ап> Խ IENDB`
Однако третий скрипт, который я когда-либо пробовал, все еще работает:
// read the post data
$data = array('100','200','300','400','500','350','270');
$x_fld = array('Sun','Mon','Tue','Wen','Thu','Fir','Sat');
$max = 0;
for ($i=0;$i<7;$i++){
if ($data[$i] > $max)$max=$data[$i]; // find the largest data
}
$im = imagecreate(320,255); // width , height px
$white = imagecolorallocate($im,255,255,255); // allocate some color from RGB components remeber Physics
$black = imagecolorallocate($im,0,0,0); //
$red = imagecolorallocate($im,255,0,0); //
$green = imagecolorallocate($im,0,255,0); //
$blue = imagecolorallocate($im,0,0,255); //
//
// create background box
//imagerectangle($im, 1, 1, 319, 239, $black);
//draw X, Y Co-Ordinate
imageline($im, 10, 5, 10, 230, $blue );
imageline($im, 10, 230, 300, 230, $blue );
//Print X, Y
imagestring($im,3,15,5,"Students",$black);
imagestring($im,3,280,240,"Days",$black);
imagestring($im,5,100,50,"Simple Graph",$red);
imagestring($im,5,125,75,"by Vijit",$green);
// what next draw the bars
$x = 15; // bar x1 position
$y = 230; // bar $y1 position
$x_width = 20; // width of bars
$y_ht = 0; // height of bars, will be calculated later
// get into some meat now, cheese for vegetarians;
for ($i=0;$i<7;$i++){
$y_ht = ($data[$i]/$max)* 100; // no validation so check if $max = 0 later;
imagerectangle($im,$x,$y,$x+$x_width,($y-$y_ht),$red);
imagestring( $im,2,$x-1,$y+1,$x_fld[$i],$black);
imagestring( $im,2,$x-1,$y+10,$data[$i],$black);
$x += ($x_width+20); // 20 is diff between two bars;
}
imagejpeg( $im, "graph.jpeg", 90);
imagedestroy($im);
echo "<img src='graph.jpeg'><p></p>";
Источник
Кажется, тот факт, что он не выводит заголовок, объясняет, почему он работает, хотя почему другие раньше работали, а теперь не выходят за рамки меня, тем более что ошибки также реплицируются на неродственном удаленном хосте, я просто невежественен и ошибочно называю сценарии? И прежде чем кто-нибудь спросит, да, я уверен, что GD полностью включен, вот соответствующие спецификации из phpinfo:
Поддержка GD: включена
Версия GD: в комплекте (совместимо с 2.0.34)
Поддержка FreeType: включена
Связь FreeType: с типом freetype
Версия FreeType: 2.1.9
Поддержка T1Lib: включена
Поддержка чтения GIF: включено
Поддержка создания GIF: включена
Поддержка JPG: включено
Поддержка PNG: включено
Поддержка WBMP: включено
Поддержка XBM: включена
Может кто-нибудь, пожалуйста, просветить эту сбитую с толку девушку?