Autor Zpráva
regy
Profil *
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
regy
imagepng($image_p, $copypath, 100);
U imagepng() se komprese nastavuje od 0 do 9 - viz. http://www.php.net/imagepng
regy
Profil *
fakc moc díky... To se nečekal takhle rychlou odpověď...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0