Autor | Zpráva | ||
---|---|---|---|
pe3k Profil * |
#1 · Zasláno: 30. 10. 2008, 12:25:15
pracujem so zmensovanim obrazkov, vsetko funguje ok, len potreboval by som este zmenseny obrazok "doplnit" do potrebnych rozmerov,
mam. napr. original obrazok 450x440 ... po uploudnuti ho zmensi do stvorca 80x80 stym ze vysledne rozmery su 80x77 a potreboval by som ten obrazok doplnit bielou alebo inou farbou do rozmeru 80x80, je na to v phpcku nejaka funkcia ktorou by som to spravil ? |
||
BetaCam Profil |
#2 · Zasláno: 31. 10. 2008, 07:10:07 · Upravil/a: BetaCam
pe3k
Tady máš takovej základ z čeho můžeš vycházet. Je to bez ochran fungovat by to mělo jen s jpg, neni to resize, ale pouze fill obrázku na určitou velikost. Je tam "centrování" takže by obrázek měl bejt vždy na středu. Jinak je to psané narychlo takže zrovna moc pěknej návrh ta třída nemá, ale na pochopení by ti to mělo stačit. class ImageFill{ private $fillColorRed = 255; private $fillColorBlue = 255; private $fillColorGreen = 255; private $fillWidth = 80; private $fillHeight = 80; private $image; private $imageWidth; private $imageHeight; private $output; public function setFillWidth($width){ $this->fillWidth = $width; return $this; } public function setFillHeight($height){ $this->fillHeight = $height; return $this; } public function setFillColor($red, $green, $blue){ $this->fillColorRed = $red; $this->fillColorGreen = $green; $this->fillColorBlue = $blue; return $this; } public function setImage($image){ $this->image = imagecreatefromjpeg($image); $data = getimagesize($image); $this->imageWidth = $data[0]; $this->imageHeight = $data[1]; return $this; } public function execute(){ $this->output = imagecreatetruecolor($this->fillWidth, $this->fillHeight); $color = imagecolorallocate($this->output, $this->fillColorRed, $this->fillColorGreen, $this->fillColorBlue); imagecopy($this->output, $this->image, round(($this->fillWidth/2)-($this->imageWidth/2)), round(($this->fillHeight/2)-($this->imageHeight/2)), 0, 0, $this->fillWidth, $this->imageHeight); imagefill($this->output, 0, 0, $color); return $this; } public function save($path){ imagejpeg($this->output, $path); imagedestroy($this->image); imagedestroy($this->output); } public function render(){ header('Content-Type: image/jpeg'); imagejpeg($this->output); imagedestroy($this->image); imagedestroy($this->output); } } $obr = new ImageFill(); $obr->setImage('obrazek.jpg') ->setFillWidth(200) ->setFillHeight(200) ->setFillColor(200,200,100) ->execute(); $obr->render(); metoda setImage() - nastavení cesty k obrázku metoda setFillWidth() - nastavení na jakou šířku se má obrázek doplňovat metoda setFillHeight()- nastavení na jakou výšku se má obrázek doplňovat metoda setFillColor() - nastavení barvy kterou se bude doplňovat ( RGB ) metoda execute() - doplní obrázek na požadovanou velikost metoda render() - pošle obrázek na výstup metoda save() - nastavení cesty pro uložení obrázku na disk a jeho uložení Doufám že ti to bude jasné |
||
Časová prodleva: 16 let
|
0