Autor | Zpráva | ||
---|---|---|---|
jirivo Profil * |
#1 · Zasláno: 15. 8. 2009, 16:26:43
Potřeboval bych poradit jak zmenšit obrázek na určitou výšku, ale šířka aby zůstala konstantní, tedy automaticky se přizpůsobila. Mám výpis z databáze a u každého záznamu mám zobrazené logo, ale každé logo je jinak široké, takže dochází k deformaci obrázku. Existuje nějaké řešení jak zachovat šířku obrázku ?
|
||
Str4wberry Profil |
#2 · Zasláno: 15. 8. 2009, 21:46:47
Nastavit jenom výšku.
|
||
Mesiah Profil |
#3 · Zasláno: 15. 8. 2009, 22:22:36 · Upravil/a: Mesiah
// podle: // http://blog.jakubmaly.cz/programovani/php/thumbnaily-v-php.aspx // mé úpravy: // * Konstantní velikost výsledného obrázku obrázku (původně proporzionální) // * Zmenšený obrázek centruju do výsledného obrázku // * Pozadí nastavuji na bílou barvu function Resize( $filename, //cesta k souboru, ktery chcete zmensit $copypath, //cesta, kam zmenseny soubor ulozit $MaxWidth, //maximalni sirka zmenseneho obrazku $MaxHeight) //maximalni vyska zmenseneho obrazku { //zjistime puvodni velikost obrazku list($OrigWidth, $OrigHeight) = getimagesize($filename); //hodnota 0 v parametrech MaxWidth resp. MaxHeight znamena, //ze sirka resp. vyska vysledku muze byt libovolna if ($MaxWidth == 0) $MaxWidth = $OrigWidth; if ($MaxHeight == 0) $MaxHeight = $OrigHeight; //nyni vypocitam pomer zmenseni $pw = $OrigWidth / $MaxWidth; $ph = $OrigHeight / $MaxHeight; if ($pw > $ph) $p = $pw; else $p = $ph; if ($p < 1) $p = 1; //v p ted mame pomer pro zmenseni //vypocitame vysku a sirku zmenseneho obrazku $NewWidth = (int)$OrigWidth / $p; $NewHeight = (int)$OrigHeight / $p; //vytvorime novy obrazek pozadovane vysky a sirky //$image_p = imagecreatetruecolor($NewWidth, $NewHeight); $image_p = imagecreatetruecolor(100, 90); //nastavim pozadi noveho brazku na bílou barvu $white = imagecolorallocate($image_p, 255, 255, 255); imagefill($image_p, 0, 0, $white); //otevreme puvodni obrazek ze souboru $image = imagecreatefromjpeg($filename); //jeste nastavim body, kam se ma obrazek posunout $NewPointX = 50 - ( $NewWidth / 2 ); $NewPointY = 45 - ( $NewHeight / 2 ); //a okopirujeme zmenseny puvodni obrazek do noveho imagecopyresampled($image_p, $image, $NewPointX , $NewPointY, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); //a ulozime imagejpeg($image_p, $copypath, 100); } upravy zvladnes sam. |
||
Časová prodleva: 15 let
|
0