Automatyczne generowanie się obrazka.

Gandziorz

Użytkownik
Dołączył
Luty 5, 2005
Posty
114
Witam mam problem z moim generatorem obrazka w php. Wyświetlają się co róż inne błędy. Przedstawiam kod:
<?php

//Od tego miejsca nic nie tykac bo dziala//
if(strlen($_GET['id']))
{
include('./config/config.php');
if($result=mysql_query("SELECT `nazwa`, `status`, `data`, `rating`, `total` FROM `programs` WHERE `id_program`='". $_GET['id'] ."'") and $payout=mysql_query("SELECT `data` FROM `payouts` WHERE `id_program`='". $_GET['id'] ."' ORDER BY `data` DESC LIMIT 1") and $vote=mysql_query("SELECT `rate` FROM `rating` WHERE id_program = ". $_GET['id']))
{
if(mysql_num_rows($result)==1)
{
$vote1=mysql_num_rows($vote);
$name=mysql_result($result, 0, 0);
$status=mysql_result($result, 0, 1);
$date1=mysql_result($result,0,2);
$rating=mysql_result($result,0,3);
$ratio=mysql_result($result,0,4);
if(mysql_num_rows($payout)==1)
$last_payout=mysql_result($payout, 0, 0);
else
$last_payout='no payouts';
mysql_free_result($result);

function datediff($date1)
{
$date2 = date('Y-m-d');
$seconds = strtotime($date2) - strtotime($date1);

$date1=date("Y-m-d", strtotime($date1));
$date2=date("Y-m-d",strtotime($date2));

$diff = floor($seconds / 86400);
//return the +ve integer only
if ($diff<0){
$diff=0-$diff;
}
return $diff;
}

$added = ('Added: '. $date1);
$monitored=datediff($date1);
$monitored2 = ('Monitored: '. $monitored . ' days');
$userratio = 'User`s rating: ';
$ratingvote = ($rating.' of '.$vote1);
$payratio = ('Payout Ratio: '. $ratio . '%');
$last_payout2 = 'Last Payment:';

//Tworzenie zawartosci obrazka//
$img=imagecreatefrompng('gfx/banner4.png');
$black=imagecolorallocate($img, 0, 0, 0);
$white=imagecolorallocate($img, 255, 255, 255);
$name=((strlen($name )>15) ? substr($name, 0, 13). '...' : $name);
$font = imageloadfont('czcionka.ttf');
imagestring($img, $font, 6, 45, $name, $black);
if ($p=imagecreatefrompng('./gfx/icons/status_'. $status .'.png'))
{
imagecopyresampled($img, $p, 25, 60, 0, 0, 140, 16, 140, 16);
imagedestroy($p);
}
imagestring($img, $font 6, 75, $added, $black);
imagestring($img, $font 6, 85, $monitored2, $black);
imagestring($img, $font, 6, 95, $userratio, $black);
imagestring($img, $font, 25, 105, $ratingvote, $black);
imagestring($img, $font, 5, 115, $payratio, $black);
imagestring($img, $font, 6, 125, $last_payout2, $black);
imagestring($img, $font, 25, 135, $last_payout, $black);
//Wyswietlenie obrazka//
header("Content-type: image/png");
ImagePNG($img);
}
}
}

?>[/b]
Od linijki 1 do 47 jest wszystko dobrze.
Czy nie wiecie skąd ten błąd:
1. błąd:
Warning: Cannot modify header information - headers already sent by (output started at /home/monitor/public_html/img4.php:52) in /home/monitor/public_html/img4.php on line 67
2. błąd:
Warning: imageloadfont(): Error reading font in /home/monitor/public_html/img4.php on line 52[/b]
 

D0han

Były Moderator
Dołączył
Lipiec 27, 2005
Posty
975
Kod:
 header("Content-type: image/png");
Nie mozesz wyslac headera bo juz zostal wczesniej wyslany.
Zastosuj ten skrypt na poczatku strony albo zastosuj kompresje.

//EDIT
Literowka ;P
 

D0han

Były Moderator
Dołączył
Lipiec 27, 2005
Posty
975
Nie wiem czy dobrze mysle, ale na poczatku calej strony (nie tego skryptu) dopisz
Kod:
ob_start("ob_gzhandler"); //wlaczenie kompresji oraz czekanie na skonczenie dzialania skryptu
 
Do góry Bottom