Autor | Zpráva | ||
---|---|---|---|
regy Profil * |
#1 · Zasláno: 6. 8. 2008, 13:24:59
Narazil jsem na problém. Z jedné stránky jsem si stáhl skript na resize obrázků. To ale funguje pouze na obrázky formátu JPG. Skript jsem se snažil upravit tak, aby fungoval i na obrázky typu PNG. To se mi na první pohled podařilo. PHP nehlásí chybu, a dokonce to i vytvoří soubor, který chci. Problém je v tom, že soubor nelze přečíst. tady je kód:
function Medium( $filename, //cesta k souboru, ktery chcete zmensit třeba fotky-velke/soubor.jpg $copypath, //kompletní cesta, kam zmenseny soubor ulozit např fotky/soubor.jpg $koncovka, //zjištění typu souboru $MaxWidth=350, //maximalni sirka zmenseneho obrazku $MaxHeight=600) //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); if($koncovka == 'jpg' or $koncovka == 'JPG' or $koncovka == 'JPEG' ) { $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); imagejpeg($image_p, $copypath, 100); } elseif($koncovka == 'png' or $koncovka == 'PNG' or $koncovka == 'MNG' ) { $image = imagecreatefrompng($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); imagepng($image_p, $copypath, 100); } chmod ($copypath, 0777);//ještě zmeníme chmod na 0777, abychom potom mohli mazat fotky přimo //v prohlížeči, když máme administraci, pokud nemáme ničemu to nevadí } Medium($cesta, "m_".$cesta, $koncovka , 350, 600); Prosím poraďte, protože absolutně nemám ponětí, co je špatně. |
||
Matty Profil |
#2 · Zasláno: 6. 8. 2008, 13:29:28
regy
„imagepng($image_p, $copypath, 100); “ U imagepng() se komprese nastavuje od 0 do 9 - viz. http://www.php.net/imagepng |
||
regy Profil * |
#3 · Zasláno: 6. 8. 2008, 14:07:04
fakc moc díky... To se nečekal takhle rychlou odpověď...
|
||
Časová prodleva: 16 let
|
0