» »

[php] phplot

[php] phplot

slovencl ::

Rad bi zrisal kakšno stvar z uporabo phplot, vendar mi ne prikaže niti testne kode:

<?php
require 'phplot.php';
$plot =& new PHPlot();
$data = array(array('', 0, 0), array('', 1, 9));
$plot->SetDataValues($data);
$plot->SetDataType('data-data');
$plot->DrawGraph();
?>


Napiše mi: Slike "http://localhost/phplot_test.php" ne morem prikazati, ker vsebuje napake.

Kakšna ideja zakaj?

GD imam vključen in phpinfo() mi ga tudi pokaže. Fajle od phplot sem includal v php include_path direktorij, vendar pa jih nisem nič korigiral. V navodilih piše, da bi moral popravit:

$ttf_path
This should be set to the pathname of the directory where you keep TrueType fonts. Setting this here means scripts can find the fonts without calling SetTTFPath or including a full pathname to the font file.

$default_ttfont
This should be set to the filename of the TrueType font you want to use as a default for plots which enable TrueType fonts. You can specify just a filename without path, and the font will be found in the $ttf_path directory set above, or you can specify the full pathname of the font file. This provides a default for SetDefaultTTFont.

vendar pa ne vem, kje so pri XP-jih TrueType fonti in kateri default_ttfont naj izberem?

Sumo ::

V browserju poglej page source, da boš vsaj videl kakšne errorje ti ven vrže.

slovencl ::

Te možnosti sploh ne morem izbrat...menu "Pogled->Izvorna koda strani" je siv.

A pa bi mi izvorna koda strani pokazala kaj več (izvorno kodo strani sem sam napisal, in jo že poznam)?

Zgodovina sprememb…

  • spremenil: slovencl ()

slovencl ::

Zdej sem ugotovil, da mi tudi gd ne dela, tudi tega mi ne pokaže:

<body>
<?php
header ("Content-type: image/png");
$handle = ImageCreate (130, 50) or die ("Cannot Create image");
$bg_color = ImageColorAllocate ($handle, 255, 0, 0);
ImagePng ($handle);
?>
</body>


Vedno dobim: "Slike "http://localhost/phpplot.php" ne morem prikazati, ker vsebuje napake.", če uporabim firefox. Če pa uporabim IE, pa dobim neke čudne znake. In če pogledam source strani, vidim:

<body>
&#8240;PNG
IHDR   &#8218;   2   Ş&#8216;Ë   PLTE˙  â	7   IDATxśc`Ł`$  &#8222; ŕV(    IEND&#174;B`&#8218;
</body>

Zgodovina sprememb…

  • spremenil: slovencl ()

Sumo ::

Pred nastavljanjem headerja ne smeš generirati nobenega outputa, niti html tagov. Odstrani torej tiste body tage.

slovencl ::

Zdej mi pa ni nič več jasno. A mi lahko prosim prilepiš eno celotno kodo, ki prikaže eno enostavno sliko.

Za uporabo gd sem gledal ta tutorial.

slovencl ::

Se pravi tako?

<?php
header ("Content-type: image/png");
$handle = ImageCreate (130, 50) or die ("Cannot Create image");
$bg_color = ImageColorAllocate ($handle, 255, 0, 0);
ImagePng ($handle);
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
</body>

<img src="image/png" />

</body>
</html>

slovencl ::

Ni mi pa jasno, zakaj tale koda prikaže samo prvo sliko? Kako bi moral napisat, da bi pokazalo obe?

Sumo ::

Ja, vidim da ti res ni jasno :)

Ko kličeš funkcijo ImagePng ($handle), le-ta outputa to sliko browserju. Ker si prej nastavil content type na image/png, browser ve, da gre za sliko in jo prikaže. Vedeti pa moraš, da content type velja za celo stran in da ko ga enkrat nastaviš, ga ne moreš več spreminjat. Cela stran je tako za browser pač ena slika.

Kar bi ti rad naredil je izvedljivo, če sejvaš slike najprej na server: ImagePng ($handle,"imefajla"), potem pa jih pač uporabiš v img tagih.

slovencl ::

Hvala Sumo, gd mi zdej dela.

Še vedno pa imam problem z phplot. Če poskusim tole:
<body>
<?php
require 'phplot.php';
$plot =& new PHPlot();
$data = array(array('', 0, 0), array('', 1, 9));
$plot->SetDataValues($data);
$plot->SetDataType('data-data');
$plot->DrawGraph();
?>
</body>

mi vrže ven le neke čudne znake. Poskusil sem tudi zapisat v fajl:
$plot-> SetOutputfile("slika.png");

pa je še vedno isto.

Kaj delam narobe?

Sumo ::

Sicer phplot-a nisem nikol probaval, ampak pomoje imaš spet probleme s headerji.

Funkcija DrawGraph() outputa sliko skupno s headerji in ker imaš pred njo body tage (oz. katerikoli output), to spet ni v redu. Odstrani jih torej.

Pri sejvanju v fajl imaš pa ravno obraten problem. Po defaultu ti SetOutputfile na disk ne zapiše headerja, ampak samo raw podatke slike, zato mu moraš prej izrecno povedati, da doda header s funkcijo SetIsInline(True). Vsaj če jaz pravilno razumem dokumentacijo, ki jo btw najdeš tukaj.

Zgodovina sprememb…

  • spremenil: Sumo ()

slovencl ::

Neverjetno, deluje! :D Najlepša hvala Sumo, vse kar si povedal drži.

Zdej morm pa tele headerje naštudirat...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[PHP] branje slike

Oddelek: Programiranje
113114 (2927) matijaz74
»

Težave z resolucijo na Linux sistemu

Oddelek: Operacijski sistemi
161453 (1235) INVICTRA
»

Linux - problemi, problemi,... (strani: 1 2 )

Oddelek: Operacijski sistemi
755394 (4155) M.B.
»

image/png .......(prikaz!!)?

Oddelek: Izdelava spletišč
181132 (1023) Ziga Dolhar
»

Učim se Linux in rabim pomoč

Oddelek: Operacijski sistemi
381780 (1391) Gandalfar

Več podobnih tem