Autor Zpráva
stanislav kalivoda
Profil *
Zdravim,
Hraju si s obrazky, zkousim uploading a tvorbu miniatur. Jenomze kdyz sem chtel ponekolikate zmensit nejaky obrazek napsalo mi to tuto chybu:
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 342800 bytes) in /home/amaterskefilmy.cz/naf.amaterskefilmy.cz/neco.php on line 8
Asi pude o to ze mam plnou nejakou pamet...ale co s tim jde nejak vyprazdnit nebo tak neco? Dik
japlavaren
Profil
teoreticky by možno šlo o toto: v apache je nastaveny max limit, s ktorym smie pracovať. čiže, buď mu v konfigurákoch nastavíš vešćí limit, alebo budeš šetriť. daj sem script, a poviem ti ako sa šetrí na zbytočných premenných.
stanislav kalivoda
Profil *
nj...ale kdy to zase pude?
stanislav kalivoda
Profil *
script poslu hned jak se dostanu k spravnemu pc
llook
Profil
Podle té hlášky máš na serveru nastaveno, že jeden skript nesmí používat víc než 24 mega paměti. Asi jsi nahrál tak velký obrázek, že jeho zpracování si vyžádalo víc paměti než je dovoleno.
Peca
Profil
Taky bych to tipoval na velký obrázek. Např. z 6 Mpix foťáku. Ten totiž v nekomprimované podobě má 24MB (rgba). Asi to bez zvýšení toho limitu nepůjde. Teda pokud knihovny gd nemají nějaké přepínače, aby si brali co nejmíň paměti (nemám s nimi moc zkušenosti).
Co třeba povolit uploadování obrázků jenom do určitých rozměrů?
Eddie
Profil
Preboha naco tak velky obrazok??? Ved ked ho das do formatu jpeg tak je rozdiel kvality maly ale velkost rapidne klesa...
Peca
Profil
Eddie
Samozřejmě zabírá třeba 1-2MB, ale když se má překonvertovat (zmenšit rozměry), tak se musí "rozbalit".
stanislav kalivoda
Profil *
nj...nahrál sem velkej obrázek to je prabda...jen sem zkoušel...samozřejmě že to nebude na tak velký obrázky...jenže ted uz tam nanahraju ani 20 kilovej soubor protože ten script je nějakej přečerpanej nebo...jak to tedy udělám abych moh znova nahrávat?
Díky
stanislav kalivoda
Profil *
Je to jasný, udělal sem blbost - ten skript sem měl takovejhle:

$nazevobr="foto/lo.jpg";
$novymini="foto/lo_m.jpg";
list( $sirka, $vyska, $typ, $atributy ) = getimagesize($nazevobr);
$sirkam= $sirka * 0.10;
$vyskam= $vyska * 0.10;
$velkyobr= imagecreatefromjpeg($nazevobr);
$mini=imagecreatetruecolor($sirkam, $vyskam);
imagecopyresampled( $mini, $velkyobr, 0, 0, 0, 0, $sirkam, $vyskam, $sirka, $vyska);
imagejpeg($mini, $novymini);
imagedestroy ($velkyobr);
imagedestroy ($mini);

ale pak sem si rek ze chci pevný rozměry a udělal sem tohle:

$nazevobr="foto/lo.jpg";
$novymini="foto/lo_m.jpg";
list( $sirka, $vyska, $typ, $atributy ) = getimagesize($nazevobr);
$sirkam= $sirka * 100;
$vyskam= $vyska * 75;
$velkyobr= imagecreatefromjpeg($nazevobr);
$mini=imagecreatetruecolor($sirkam, $vyskam);
imagecopyresampled( $mini, $velkyobr, 0, 0, 0, 0, $sirkam, $vyskam, $sirka, $vyska);
imagejpeg($mini, $novymini);
imagedestroy ($velkyobr);
imagedestroy ($mini);

Což byla samozřejmě blbost, jen sem se překouk....Díky všem za ochotu.
japlavaren
Profil
$nazevobr="1.jpg"; 

$novymini="1_m.jpg";

$size=getimagesize($nazevobr);

$mini=imagecreatetruecolor($size[0]*0.1,$size[1]*0.1);

imagecopyresampled( $mini, imagecreatefromjpeg($nazevobr), 0, 0, 0, 0, $size[0]*0.1, $size[1]*0.1, $size[0], $size[1]);
imagejpeg($mini, $novymini);
imagedestroy ($mini);


typujem, ze nebudes resamploat existujuci obrazok, ale ten co sa tam nahra, cize

$novymini="foto/lo_m.jpg"; 


$size=getimagesize($_FILES['file']['tmp_name']);

if($size[2]!='image/jpg' || $size[2]!='image/jpeg')
die();

$mini=imagecreatetruecolor($size[0]*0.1,$size[1]*0.1);

imagecopyresampled( $mini, imagecreatefromjpeg($_FILES['file']['tmp_name']), 0, 0, 0, 0, $size[0]*0.1, $size[1]*0.1, $size[0], $size[1]);
imagejpeg($mini, $novymini);
imagedestroy ($mini);
stanislav kalivoda
Profil *
ještě mě ted napadlo....co kdybych chtěl obrázek oříznout (třeba zmenšit na požadovanou šířku při zachování proporci a pak oříznozut přebývající výšku) ? umí to GD knihovna?
japlavaren
Profil
jasne, tie parametry v imagecopyresampled/0,0,0,0,/ určujú pozíciu obrázku. neviem presne, ktoré je ktoré, pozri si to tu a ked je obrazok vecsi, ako to, kam sa ma nacpat tak sa to ureze.
Toto téma je uzamčeno. Odpověď nelze zaslat.