mehrere Bilder zusammenfügen
Stefan Einspender
- php
Hallo ForumsleserInnen,
wie kann ich mit PHP mehrere Bilder zu einem Bild zusammenfügen?
___ ___
| | | |
|___| |___|
___ ___
| | | |
|___| |___|
wird zu
______
| |
| |
| |
|______|
Hat da jemand eine Idee, ein Verweis auf eine Funktion in PHP, die
so etwas ermöglicht, reicht mir schon aus.
Viele Grüße,
Stefan
Hi Ste*Patchwork*fan,
wie kann ich mit PHP mehrere Bilder zu einem Bild zusammenfügen?
___ ___
| | | |
|___| |___|
___ ___
| | | |
|___| |___|wird zu
______
| |
| |
| |
|______|Hat da jemand eine Idee, ein Verweis auf eine Funktion in PHP, die
so etwas ermöglicht, reicht mir schon aus.
Pah, PHP... Mit float: bekommst du es sogar hin, dass sich das Bild der Fenstergröße anpasst ;-)
Grüße,
Ro*SCNR*land
Hallo Roland,
Hi Ste*Patchwork*fan,
^^^^^^^^^
Pah, PHP... Mit float: bekommst du es sogar hin, dass sich das Bild der Fenstergröße anpasst ;-)
gut, dann kurze Rechnung ... durch den Spiegel-Artikel sind etwa
20.000 Besucher zusätzlich auf meine Website gekommen, macht dann
bei 768 einzelnen Grafiken + HTML-Datei jedesmal 769 Einträge [1],
summa summerum einen Logfile von mehr als 3 GB (unkomprimiert) und
mit 15.380.000 Zeilen, wie soll ich den auswerten? ;-)
Ich habe gerade http://php.net/imagecopy entdeckt, könnte die Lösung
sein. Wenn jemand etwas Besseres weiß oder mir ein Übungsbeispiel [2]
schreibt, bin ich natürlich auch nicht böse ;-)
Viele Grüße,
Stefan
[1] Viele Computer werden allerdings während des Ladevorganges in
die Knie gehen, ist auch abhängig vom verwendeten Browser. Ich
habe mir schon Probleme, wenn ich derzeit die Gesamtgrafik er-
stelle (Screenshot im MSIE-Vollbildmodus), deshalb suche ich
nach einer besseren Variante.
[2] Werde bestimmt irgendwo etwas finde, wo schonmal jemand diese
Funktion angewendet hat. Wenn es eine bessere Möglichkeit gibt,
dann dürft Ihr die mir gern verraten ;-)
Hi Stefan,
gut, dann kurze Rechnung ... durch den Spiegel-Artikel sind etwa
20.000 Besucher zusätzlich auf meine Website gekommen,
ich wünsche dir, dass das noch öfter passiert, würde aber von den Besucherzahlen davor ausgehen. Abgesehen davon warten Modembesitzer bei einem fast 0.5MB großen Bild *sehr* lange. Allerdings ist der HTTP-Overhead bei so vielen Bildern wahrscheinlich größer, als das aktuelle Bild selbst. Also: [GENEHMIGT]
macht dann
bei 768 einzelnen Grafiken + HTML-Datei jedesmal 769 Einträge [1],
summa summerum einen Logfile von mehr als 3 GB (unkomprimiert) und
mit 15.380.000 Zeilen, wie soll ich den auswerten? ;-)
Tsts, wenn ich nach einem Tool zur Logfile-Analyse suche, warum lese ich dann immer wieder deinen Namen? ;-)
Grüße,
Roland
Moin!
wie kann ich mit PHP mehrere Bilder zu einem Bild zusammenfügen?
Mit imagecopy*()
Hat da jemand eine Idee, ein Verweis auf eine Funktion in PHP, die
so etwas ermöglicht, reicht mir schon aus.
Du brauchst die gdlib und benutzt dann einfach die von ihr angebotenen Funktionen.
Grob als Orientierung: Du legst ein Ziel-Bild an, welches in der Größe alle zusammenzufügenden Bilder aufnehmen kann. Dann öffnest du jeweils die einzelnen Quell-Bilder und kopierst sie ins Ziel-Bild hinein. imagecopy() oder imagecopyresized() bzw. imagecopyresampled() sollten das prima erledigen können.
Für die korrekte Positionierung der Bilder im Zielbild bist du selbst verantwortlich. :)
- Sven Rautenberg
Hallo Sven,
Mit imagecopy*()
<?PHP
$favicon = imagecreatefrompng("favicon.png");
$patchwork = imagecreatefrompng("patchwork.png");
imagecopy($patchwork,$favicon,0,0,0,0,32,32);
imagepng($patchwork,"patchwork.png");
?>
ist mein Beispiel, nur basiert dann patchwork.png immer auf den 256
websicheren Farben, was ich natürlich nicht will. Wie kann ich das
Problem umgehen? Ist womöglich http://php.net/imagecreatetruecolor
die Lösung? Wenn ja, gibt es eine Alternative, weil ich keine GD
2+ zur Verfügung habe?
Für die korrekte Positionierung der Bilder im Zielbild bist du selbst verantwortlich. :)
Ja, sollte kein Problem sein. Nur wenn obengen. Sache nicht lösbar
ist, nutzt mir der ganze Kram nix ;-)
Viele Grüße,
Stefan
Moin!
<?PHP
$favicon = imagecreatefrompng("favicon.png");
$patchwork = imagecreatefrompng("patchwork.png");
imagecopy($patchwork,$favicon,0,0,0,0,32,32);
imagepng($patchwork,"patchwork.png");
?>ist mein Beispiel, nur basiert dann patchwork.png immer auf den 256
websicheren Farben, was ich natürlich nicht will.
Nein, nicht 256 websichere Farben werden genommen, sondern die Palette des ersten Bildes (bzw. das, in das hinein du den Rest kopierst).
Wie kann ich das Problem umgehen? Ist womöglich http://php.net/imagecreatetruecolor
die Lösung? Wenn ja, gibt es eine Alternative, weil ich keine GD
2+ zur Verfügung habe?
imagecreatetruecolor ist in der Tat die Lösung. Die gdlib kann leider in Version 1.x noch nicht mit True Color umgehen, das kam IIRC erst mit Version 2. Diese ist zum Glück mit PHP 4.3.x gebundelt - das einzelne Installieren aus dem Source war nämlich nicht ganz so trivial.
Alternativen gibts da leider irgendwie keine - jedenfalls nicht mit der gdlib. Wenn du hast oder installieren kannst, wäre ImageMagick noch eine Idee.
- Sven Rautenberg
Hallo Sven,
Nein, nicht 256 websichere Farben werden genommen, sondern die Palette des ersten Bildes (bzw. das, in das hinein du den Rest kopierst).
komisch, bei mir hat er da immer alle Farben genommen, nur eben
dieser websicheren Farbpalette angeglichen. Wenn ich also ein
komplett grünes in ein komplett rotes Bild reinkopiere, ist in der
Palette nur rot und grün. Wenn ich da ein Foto reinkopiere, wird
die Palette angepasst, nur eben nach wie vor ausschließlich web-
sichere Farben, was dann nicht so dolle ausschaut :-/
Naja, ist letztendlich egal, weil diese Variante taugt nix für mich.
Diese ist zum Glück mit PHP 4.3.x gebundelt
Hm ... ich werde mal bei 1&1 anrufen, ob dieser Wechsel vielleicht
demnächst angedacht ist, da brauche ich nicht unnötig noch einer
Alternative suchen.
Wenn du hast oder installieren kannst, wäre ImageMagick noch eine Idee.
Gute Idee, gibt es ja afaik auch für Windows, da schaue ich mal.
Danke & Viele Grüße,
Stefan