Hallo.
Ich arbeite seit einiger Zeit an einem Projekt oder besser gesagt an einem Generator. Dieser kann Ortsschilder erstellen. Das große Problem an diesem Projekt ist, dass ich mit ziehmlich großen Grafiken arbeiten muss. Denn die erstelten Grafiken sollen von den Usern ausgedruckt und z.B. im Modellbau benutzt werden können. Also benötige ich die Ausgabe-Grafik in verschiedenen Größen. Also auch u.U. in DIN A4 usw.
Nach etliche Tests (ImageMagick usw.) bin ich zu dem Endschluss gekommen das nur Grafiken in den Dimensionen 10000x5000px und höher in Frage kommen. Denn es werden teilweise Fotorealistische Details verwendet die bei kleinere Grafiken nichts mehr mit Qualität zutun haben. Darauf möchte ich nicht verzichten.
Das Problem ist nun das der Speicher auf dem Server (Standard-Einstellung auf 64 MB) nicht ausreicht um so große Grafiken zu erstellen und zu verarbeiten. Ein User aus diesem Forum hat mir Vorgerechnet das alleine der Befehl imagecreatetruecolor(10000, 2000); schon ca. 95 MB braucht. Das ist zuviel des guten. Ich müsste das Speicher-Limit manuell auf mindestens 512MB (sogar 1024MB) einstellen damit das ganze Skript durchläuft. Ich habe zwar nur einen Webhost-Paket aber selbst mit einem eigenem Server wäre mir das zuviel.
Um es auf den Punkt zu bringen: GDLib ist für mein Vorhaben nicht geeignet. ImageMagick ist mir zu schlecht dokumentiert und selbst in ImageMagick-Foren und Unterforen gibt es nicht immer Support. Naja soll jetzt keine kritik sein. Ich bin für jede Hilfe dankbar.
Was mir jetzt noch einfallen würde wäre SVG. Das Problem ist das ich SVG nur am PC ganz gut kann. Ich kann also mit Inkscape usw. schöne Grafiken erstellen die genau meine Erwartungen erfüllen. Aber beim manuellen "schreiben" von SVG habe ich so meine Probleme.
Jetzt ist mir aber folgende Idee gekommen.
Mit SVG ist es möglich auch Pixel-Grafiken (z.B. PNG) zu laden und ich habe es ausprobiert und es funktioniert. Ich habe manuell eine Grafik erstellt die die Größe 20000x10000px hatte und die Grafik wurde SOFORT ohne Probleme im Browser angezeigt.
Meine Idee ist es jetzt alle benötigten Berechnungen, Pfade usw. usw. mit PHP zu verarbeiten und statt dann mit GDLib die Grafik "aufzubauen" ein SVG-Dokument zu erstellen, dieses auf den Server speichern und mit ImageMagick in ein Pixel-Format zu konvertieren.
Wo die Grenzen von SVG liegen weiss ich leider noch nicht aber scheint das es auch mit sehr großen Pixel-Grafiken gut zurecht kommt.
Meine erste Frage zu diesem Thema ist:
So ein Code (so ähnlich) erzeugt (Stark vereinfacht) bei mir die gewünschte Grafik.
Jetzt möchte ich gerne diesen Code mit PHP in einer Schleife erzeugen. Ich habe aber keine Idee wie ich das Sinnvoll machen könnte. Eigentlich habe ich gar keine Idee.
Gegeben:
Gesucht:
1.) width und height (sollte mit getimagesize funktionieren oder besser Hardcodet?)
2.) x und y
3.) Die Schleife die das kann
Ich bedanke mich im Vorraus und hoffe das mir jemand helfen kann.
PS: Ich würde auch gerne ein Feedback zu meiner Idee hören. Ist das so Sinnvoll wie ich das vor habe? Eine gute oder eher schlechte Idee?
Ich arbeite seit einiger Zeit an einem Projekt oder besser gesagt an einem Generator. Dieser kann Ortsschilder erstellen. Das große Problem an diesem Projekt ist, dass ich mit ziehmlich großen Grafiken arbeiten muss. Denn die erstelten Grafiken sollen von den Usern ausgedruckt und z.B. im Modellbau benutzt werden können. Also benötige ich die Ausgabe-Grafik in verschiedenen Größen. Also auch u.U. in DIN A4 usw.
Nach etliche Tests (ImageMagick usw.) bin ich zu dem Endschluss gekommen das nur Grafiken in den Dimensionen 10000x5000px und höher in Frage kommen. Denn es werden teilweise Fotorealistische Details verwendet die bei kleinere Grafiken nichts mehr mit Qualität zutun haben. Darauf möchte ich nicht verzichten.
Das Problem ist nun das der Speicher auf dem Server (Standard-Einstellung auf 64 MB) nicht ausreicht um so große Grafiken zu erstellen und zu verarbeiten. Ein User aus diesem Forum hat mir Vorgerechnet das alleine der Befehl imagecreatetruecolor(10000, 2000); schon ca. 95 MB braucht. Das ist zuviel des guten. Ich müsste das Speicher-Limit manuell auf mindestens 512MB (sogar 1024MB) einstellen damit das ganze Skript durchläuft. Ich habe zwar nur einen Webhost-Paket aber selbst mit einem eigenem Server wäre mir das zuviel.
Um es auf den Punkt zu bringen: GDLib ist für mein Vorhaben nicht geeignet. ImageMagick ist mir zu schlecht dokumentiert und selbst in ImageMagick-Foren und Unterforen gibt es nicht immer Support. Naja soll jetzt keine kritik sein. Ich bin für jede Hilfe dankbar.
Was mir jetzt noch einfallen würde wäre SVG. Das Problem ist das ich SVG nur am PC ganz gut kann. Ich kann also mit Inkscape usw. schöne Grafiken erstellen die genau meine Erwartungen erfüllen. Aber beim manuellen "schreiben" von SVG habe ich so meine Probleme.
Jetzt ist mir aber folgende Idee gekommen.
Mit SVG ist es möglich auch Pixel-Grafiken (z.B. PNG) zu laden und ich habe es ausprobiert und es funktioniert. Ich habe manuell eine Grafik erstellt die die Größe 20000x10000px hatte und die Grafik wurde SOFORT ohne Probleme im Browser angezeigt.
Meine Idee ist es jetzt alle benötigten Berechnungen, Pfade usw. usw. mit PHP zu verarbeiten und statt dann mit GDLib die Grafik "aufzubauen" ein SVG-Dokument zu erstellen, dieses auf den Server speichern und mit ImageMagick in ein Pixel-Format zu konvertieren.
Wo die Grenzen von SVG liegen weiss ich leider noch nicht aber scheint das es auch mit sehr großen Pixel-Grafiken gut zurecht kommt.
Meine erste Frage zu diesem Thema ist:
XML:
<image x="0" y="0" width="10000px" height="5000px" xlink:href="Background.png" />
<image x="200" y="1500" width="500px" height="2000" xlink:href="H.png" />
<image x="700" y="1500" width="500px" height="2000" xlink:href="A.png" />
<image x="1200" y="1500" width="500px" height="2000" xlink:href="L.png" />
<image x="1700" y="1500" width="500px" height="2000" xlink:href="L.png" />
<image x="2200" y="1500" width="500px" height="2000" xlink:href="O.png" />
<image x="2700" y="1500" width="500px" height="2000" xlink:href="@.png" />
<image x="3200" y="1500" width="500px" height="2000" xlink:href="A.png" />
<image x="3700" y="1500" width="500px" height="2000" xlink:href="L.png" />
<image x="4200" y="1500" width="500px" height="2000" xlink:href="L.png" />
So ein Code (so ähnlich) erzeugt (Stark vereinfacht) bei mir die gewünschte Grafik.
Jetzt möchte ich gerne diesen Code mit PHP in einer Schleife erzeugen. Ich habe aber keine Idee wie ich das Sinnvoll machen könnte. Eigentlich habe ich gar keine Idee.
Gegeben:
PHP:
$var1 = 'HALLO';
$var2 = '@';
$var3 = 'ALL';
Gesucht:
1.) width und height (sollte mit getimagesize funktionieren oder besser Hardcodet?)
2.) x und y
3.) Die Schleife die das kann
Ich bedanke mich im Vorraus und hoffe das mir jemand helfen kann.
PS: Ich würde auch gerne ein Feedback zu meiner Idee hören. Ist das so Sinnvoll wie ich das vor habe? Eine gute oder eher schlechte Idee?