Mit PHP Kurve zeichnen oder aus SVG eine PNG datei erstellen

guenter024

Erfahrenes Mitglied
Hallo PHP-Freunde,
ich muss für ein mit php dynamisch generiertes Diagramm eine Kurve erstellen. Die GD library ist vorhanden.

Doch ich finde keine Funktion für eine richtige Kurve, imageline verbindet die Koordinaten nur mit einer Geraden, so dass zwar der Anschein einer Kurve entsteht, aber bei genauem Hinsehen es doch nich so gut aussieht.

Habe nun alternativ mittels PHP eine SVG-Grafik erstellt. Hier lässt sich wunderbar die Kurve generieren, jedoch besteht ja beim SVG-Format das Problem der Browserkompatibilität. Optimal wäre also die Lösung, aus der generierten SVG-Grafik ein PNG-Bild zu erstellen und dann dieses an den Browser zu auszugeben.

Hat hierzu jemand eine Lösung parat oder zumindest einen Ansatz für mich?

Über jede Hilfe wäre ich sehr dankbar.

Günter
 
Ist doch kostenlos für non-profit, open-source oder Bildungsbereich?

Ansonsten bietet das Graph Modul aus den Apache Zeta Components (ehemals eZ Framework) ebenfalls einige Möglichkeiten in diese Richtung.
 
Danke für die Links, doch am verzweifeln ich bin.
Apache Zeta Components scheint vorübergehend nicht verfügbar zu sein.
Es ist auch alles irgendwie unübersichtlich.
Ich habe da zwar etwas gefunden über "SVG to bitmap conversion" aber das verläuft alles im Sand.
Ich suche und probiere jetzt schon seit Stunden.
Gibt es keinen einfacheren Weg?
Ich habe ja schon die PHP-Rechnerei und ein SVG-file und muss praktisch nur noch das Bild rendern, wie hier beschrieben: rsvg input.svg output.png
Aber wie muss ich das einbinden? Das ist doch kein php code, oder?
 
Hallo,

habe jetzt ziemlich viel auspropiert, wenn ich das Raster verkleinere und versuche, die "Bézierkurve" mit php zu zeichnen wird die Grafik immer verpixelt, es entsteht keine Rundung (sieht ungefähr so aus wie hier:
LINK

Das einfachste wäre die SVG in eine PNG zu konvertieren, also wäre rsvg schon das richtige. Doch ich komme mit der documentation nicht klar.

Soweit ich herausgefunden habe hat man auf rsvg nur Zugriff, wenn diese auf dem Webserver implementiert ist (bin bei 1und1, laut meiner phpinfo() also nicht zur Verfügung und ich glaube nicht, dass diese auf mein Bitten die librsvg extra installieren).
Kann ich diese librsvg also irgendwie anders einbinden?
Wenn ja, wie muss ich dazu vorgehen?

Nochmals mercy.
Ciao und noch nen schönen Sonntagabend...
Günter
 
Nein, die Bibliothek kann nicht in PHP eingebunden werden.
Und mit diesen Anforderungen kann dir ein einfacher PHP Webspace auch nicht weiterhelfen.
 
Wie kann ich prüfen, ob ImageMagick installiert ist? Müsste das auch in der phpinfo() stehen?

exec() steht zur Verfügung.
Würde es eventuell genügen, wenn ich die librsvg einfach via ftp in mein Webverzeichnis hochlade und im $path referenziere?
Wie erfogt dann der Aufruf?
Ist es so richtig:
PHP:
if(function_exists('exec'))
{
    exec($_SERVER['DOCUMENT_ROOT'].'librsvg/rsvg-convert -w $width -h $height -o $output $input');
    if(file_exists($output))
    {
        print "Datei wurde erstellt";
    }
    else
    {
        print "Konvertierung fehlgeschlagen";
    }
}

?
Lokal funktioniert es jedenfalls nicht. Wo exakt muss ich die librsvg zum Testen auf dem Lokalen Webserver ablegen (ich nutze xampp für Windows Version 1.7.3 ).
 
Zurück