======[PHP] Grafik Ordensammlung====== Dies dient als Beispiel wie man Grafiken zusammensetzen kann. =====Vorraussetzungen===== - Alle Quellgrafiken sind im Unterordner 'img' - Du hast eine maximale Breite der Grafik $maxWidth - Du hast eine Standarthöhe der Zeilen $rowH - Jede Grafik wird in der Grösse so angepasst, dass sie die Zeilenhöhe $rowH als Höhe hat. =====Code===== (php;1) path = $path.$fileName); $this->w = (($this->h = $maxH)/($this->srcH = $info[1]))*($this->srcW = $info[0]); } //öffnet die Quellgrafik und gibt die Ressource zurück private function getSource(){ //Auswertung des Imagetypes -> http://ch.php.net/manual/de/function.image-type-to-mime-type.php switch(exif_imagetype($this->path)){ case IMAGETYPE_PNG: return imagecreatefrompng($this->path); case IMAGETYPE_GIF: return imagecreatefromgif($this->path); case IMAGETYPE_JPEG: return imagecreatefromjpeg($this->path); } } //kopiert die Sourcegrafik in die Haubtgrafik $image public function copyIntoImage(&$image){ imagecopyresampled($image, $this->getSource(), $this->x, $this->y, 0, 0, $this->w, $this->h, $this->srcW, $this->srcH); } } function loadSources(&$source){ global $dim; static $x=0, $y=0; //Object erstellen $source = new Img($source, dirname(__FILE__)."/img/", $dim->rowH); //Wenn die voraussichtliche Breite breiter ist als die maximal zulässig //einen Zeilenumbruch einfügen if ($dim->maxW < ($x + $source->w)){ $dim->h = ($y += $dim->rowH) + $dim->rowH; $x = 0; } //Zielkoordinaten an die Grafikdefinition übergeben $source->x = $x; $source->y = $y; //grösste Breite ermitteln $dim->w = max($dim->w, ($x += $source->w)); } //Settings $dim = new stdclass; //Object mit den Dimensionen der Zielgrafik $dim->maxW = 100; //maximale Breite in Pixel $dim->rowH = 30; //Zeilenhöhe in Pixel //TODO: $sources flexibel zusammensetzen anhand von Daten $sources = array('add.png', 'address-book-new.png', 'back.png', 'bottom.png'); //Die Grafikdefinitionen laden und die Grösse der Zielgrafik berechnen array_walk($sources, 'loadSources'); //Zielgrafik erstellen $image = imagecreate($dim->w, $dim->h); //Alle Grafiken in die Zielgrafik kopieren foreach($sources as $source){$source->copyIntoImage($image);} //Header ausgeben header ('Content-type: IMAGETYPE_PNG'); /** Grafik ausgeben */ imagepng($image); /** temporäre Grafik zerstören */ imagedestroy($image); ?> ---- =====Files===== {{files}} ---- [[CatPhp]]