Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Вместо картинки выодит ‰PNG (http://forum.typo3.ru/showthread.php?t=2529)

Nat 27.01.2007 12:54

Вместо картинки выодит ‰PNG
 
Проблема такая: есть 2 страницы.

2.php:
//////////////////////////////////////////
<?php
header('Content-type: image/png');
$img = imageCreate(100, 100);
$black = imageColorAllocate($img, 0, 0, 0);
$white = imageColorAllocate($img, 255, 255, 255);
$orange = imageColorAllocate($img, 255, 128, 64);
$lightorange = imageColorAllocate($img, 255, 220, 164);
imageFilledRectangle($img, 0, 0, 100, 100, $white);
imageRectangle($img, 0, 0, 99, 99, $black);
imageRectangle($img, 5, 5, 94, 94, $black);
$points = Array(12,10,
20,15,
15,20);
$nump = (int) count($points)/2;
imagePolygon($img, $points, $nump, $orange);
imageLine($img, 17, 18, 27, 33, $orange);
imageLine($img, 18, 18, 28, 33, $lightorange);
imageLine($img, 19, 18, 29, 33, $orange);
imageRectangle($img, 15, 33, 80, 75, $orange);
imageFill($img, 14, 14, $lightorange);
imageFill($img, 20, 40, $lightorange);
imageString ($img, 2, 20, 40, "I'm a PHP", $black);
imageString ($img, 2, 30, 55, "image", $black);
imagePNG($img);
?>
//////////////////////////////////////////

add.html:
//////////////////////////////////////////
<img src="2.php">
//////////////////////////////////////////

Под Denwer все работает: можно грузить и 2.php, и add.html.

Но когда я добавляю этот код на страницы готового сайта(он - на typo3), то php-файл показывает вместо картинки:
‰PNG  IHDRdd Œ}Ç PLTEÿÿÿÿ€@ÿܤDCígIDATxœíÖ;  ...

Библиотека GD подключена (судя по настройкам - см.phpinfo()).
Никаких ошибок не выводит,просто вместо картинки выводится этот странный текст.Как я понимаю, это происходт из-за вывода какой-то информации до header в скрипте.
О typo3 я знаю ОЧЕНЬ мало, а разбираться некогда - надо этот скрипт СРОЧНО прикрутить к готовому сайту. ОГРОМНАЯ просьба помочь!!!!

void 27.01.2007 15:02

А каким образом вы добавляете код и какой именно "этот"?
Если вставить в контент код <img src="">, то всё должно работать.
Если же вы пытаетесь прямо в страницу вставить php-код, то логично, что у вас ничего не получается.

Nat 27.01.2007 19:03

На сайте есть 2 страницы.
Загрузка происходит со страницы №1. Там есть HTML контент, в котором есть только одна строка:

<img src="2.php">

Страница №2: называется "2.php" и содержит PHP контент, в котором находится следующий код:

<?php
header('Content-type: image/png');
function RandCharImage($code)
{
$font = "font.ttf";

$img = ImageCreate (320, 50);

$color = array();
$color[] = ImageColorAllocate ($img, 0, 0, 0);
$color[] = ImageColorAllocate ($img, 0, 0, 127);
$color[] = ImageColorAllocate ($img, 127, 0, 0);
$color[] = ImageColorAllocate ($img, 0, 127, 0);
$color[] = ImageColorAllocate ($img, 127, 127, 0);
$color[] = ImageColorAllocate ($img, 127, 0, 127);
$color[] = ImageColorAllocate ($img, 0, 127, 127);
$color[] = ImageColorAllocate ($img, 127, 127, 127);
$color[] = ImageColorAllocate ($img, 0, 0, 255);
$color[] = ImageColorAllocate ($img, 255, 0, 0);
$color[] = ImageColorAllocate ($img, 0, 255, 0);
$color[] = ImageColorAllocate ($img, 255, 255, 0);
$color[] = ImageColorAllocate ($img, 255, 0, 255);
$color[] = ImageColorAllocate ($img, 0, 255, 255);
$color[] = ImageColorAllocate ($img, 255, 255, 255);

$sx = ImageSX ($img) - 1;
$sy = ImageSY ($img) - 1;
$sc = count ($color) - 1;

// Background noise:
for ($i = 0; $i < 1024; $i++)
{
$x = mt_rand (0, $sx);
$y = mt_rand (0, $sy);
$c = $color[mt_rand(1,$sc)];
ImageSetPixel ($img, $x, $y, $c);
}

// Output of a code:
$xpos = mt_rand (4, 16);
$height = $sy - mt_rand (0, $sy / 4);
for ($i = 0; $i < strlen($code); $i++)
{
$angle = mt_rand (0, 45) - 22;
$size = mt_rand (0, 10) + 30;
$ypos = $sy - mt_rand (4, $sy - $height);
$c = $color[mt_rand(9,$sc)];
$rect = ImageTTFtext ($img, $size, $angle, $xpos, $ypos, $c, $font, $code[$i]);
$width = $rect[2] - $rect[0];
$height = $rect[1] - $rect[7];
$xpos += $width + mt_rand (0, 32) - 8;
}

//Forward noise:
for ($i = 0; $i < 256; $i++)
{
$x = mt_rand (0, $sx);
$y = mt_rand (0, $sy);
$c = $color[mt_rand(1,$sc)];
ImageSetPixel ($img, $x, $y, $c);
}
for ($i = 0; $i < mt_rand (2, 8); $i++)
{
$x1 = mt_rand (0, $sx);
$y1 = mt_rand (0, $sy);
$x2 = mt_rand (0, $sx);
$y2 = mt_rand (0, $sy);
$c = $color[mt_rand(0,$sc)];
ImageLine ($img, $x1, $y1, $x2, $y2, $c);
}

ImagePng ($img);
ImageDestroy ($img);
}
session_start();
RandCharImage($_SESSION['code_chars']);
?>

Если грузится со страницы №1-то картинка не выводится, если со страницы №2 - выводится следующее:

‰PNG  IHDR@2УтжХPLTEяяяяяяяяяяяя?_Яїџ ___џџџ???ЯЯЯїїї??яЯЯ??џППџяяџџ?Яяя?яяїяџ_?її? ЇяЯП/??џ__я??яџяџя?џџя_ЇЇїїїЯя_яЯПї?ї??џ_яїЯЯ џџ__??їїЯпїяџџ_FкЊE ‰IDATxњ­[‡Ілё ҐдўjYІ%[v’MvУ&uR&“кЫ6ЙяR°,ІоЛГмѕ«B‘АБRІнF(1E)¬d""?ь oNZСоГЫRr<(ХaLў} QWєxCqH\ћЭх{,–­ЧЅЗ¶Й†‹Іе§>DFЫЭB)\˜©д‡t %рчҐµХХxЪG®‹­«йf©JњDNцOоу–№хZtјиП?ћOЕі-¦и.tЖ.BрЖк УW9µ,ЕZI[јk–€’Ы±вRGЬjЊ*ь€‹bH|ЊRэїҐСТdП7> и т.д.

PhilD 27.01.2007 21:23

2.php - это страница в TYPO или просто файл лежащий на сайте?

Nat 27.01.2007 21:46

БОЛЬШОЕ спасибо всем за помощь, но ошибка уже найдена.
Решение было в том,чтобы перенетси файл 2.php в другую папку - так и не стало понятно, почему ссылка на файл 2.php в старой папке не работала-путь был правильный. После этого картинка стала нормально показываться.


Часовой пояс GMT +4, время: 04:14.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot