Autor | Zpráva | ||
---|---|---|---|
Watchick Profil |
#1 · Zasláno: 2. 4. 2009, 20:30:03
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 9216 bytes) in /var/www/web2/damak.cz/uzivatele.damak.cz/resizer.php on line 25
V souboru: function Resizer($filename,$copypath,$MaxWidth,$MaxHeight) { //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); //otevreme puvodni obrazek se souboru $image = imagecreatefromjpeg($filename); //a okopirujeme zmenseny puvodni obrazek do noveho imagecopyresampled($image_p, $image, 0, 0, 0, 0, $NewWidth, $NewHeight, $OrigWidth, $OrigHeight); //a ulozime imagejpeg($image_p, $copypath, 100); } Jde ta "paměť" nějak zvětšit, nebo v čem by mohl být problém? Děkuji |
||
Joker Profil |
#2 · Zasláno: 2. 4. 2009, 21:35:27
Watchick
Blbý, no, taky mám se zmenšováním velkých obrázků podobný problém. Maximální velikost paměti pro skript zvětšit jde, ale je na to potřeba mít přístup k php.ini, což na webhostingu bývá docela problém. V php.ini by to mělo být nastavení memory_limit. |
||
watchick Profil * |
#3 · Zasláno: 2. 4. 2009, 21:52:42
a kdyby se mi to povedlo, tak kolik by tak bylo dobre nastavit, aby to stacilo... cca?
popripade jak se da poznat, kolik uz je moc, a zastavit to podminkou, aby se neobjevil error? diky |
||
Joker Profil |
#4 · Zasláno: 2. 4. 2009, 22:17:18
watchick
a kdyby se mi to povedlo, tak kolik by tak bylo dobre nastavit, aby to stacilo... cca? V případě obrázků se to liší kus od kusu. Hlavně záleží na velikosti (~ rozměrech v pixelech) obrázku. popripade jak se da poznat, kolik uz je moc, a zastavit to podminkou, aby se neobjevil error? Upřímně řečeno, tohle by mě taky zajímalo. |
||
AM_ Profil |
#5 · Zasláno: 2. 4. 2009, 22:28:26
Lze to vzít takzvaně "baj voko" - zjistit, při jaké velikosti v bytech zhruba nastává problém, a vyšší velikost prostě zakázat. Nebude to přesné, ale aspoň něco.
|
||
Watchick Profil |
#6 · Zasláno: 3. 4. 2009, 06:28:14
Špatný na tom je to, že se vytváří vlastně 2 obrázky, jeden větší, a jedna mala ikonka, ale vytvori se jen ikonka a zkopíruje se velký obrázek, takže střední velikost chybí... njn al chyba nastává už při 600KB...
|
||
Joker Profil |
#7 · Zasláno: 3. 4. 2009, 07:21:43
Watchick
Špatný na tom je to, že se vytváří vlastně 2 obrázky, jeden větší, a jedna mala ikonka, ale vytvori se jen ikonka a zkopíruje se velký obrázek, takže střední velikost chybí Ale kdyby se ten střední obrázek vytvářel jako první, tak se vytvoří buď všechny nebo žádný, ne? |
||
Mike8748 Profil |
#8 · Zasláno: 3. 4. 2009, 09:49:57
Watchick
„njn al chyba nastává už při 600KB...“ omyl chyba nastává od určitého rozlišení obrázku v pixelech, na tom kolik soubor zabírá na disku vubec nezáleží |
||
Watchick Profil |
#9 · Zasláno: 3. 4. 2009, 09:58:09
aha... http://uzivatele.damak.cz/fotky/osobni/57.jpg Takže tohle je moc, jasný...
|
||
Mike8748 Profil |
#10 · Zasláno: 3. 4. 2009, 10:06:01 · Upravil/a: Mike8748
Watchick
hrubej vypocet pro "bezny" obrazky je (sirka x vyska x 3) = velikost pameti v bajtech, kolik pro to potrebuje GD knihovna. sirka a vyska v pixelech. a jeste je treba pocitat s tim ze tolik pameti ti zabere otevreni zdrojoveho obrazku. pak jeste potrebujes pamet na vytvoreni ciloveho obrazku, ty zmenseniny. vypocet bude stejnej. k tomu jeste pricist par desitek(spis stovek) kilobajtu pro skript jako takovej, a to cely se ti musi vejit do memory limitu |
||
AM_ Profil |
#11 · Zasláno: 3. 4. 2009, 10:58:13
„chyba nastává od určitého rozlišení obrázku v pixelech, na tom kolik soubor zabírá na disku vubec nezáleží“
Mike8748 Jo, pochopitelně jde o pixely, místo na disku ale může sloužit pro hrubý odhad (psal jsem, že by to nebylo přesné). Nejdřív mi nedošlo, že vlastně rozlišení lze zjistit přes funkci getimagesize() - s tím už to půjde docela přesně. |
||
Davex Profil |
#12 · Zasláno: 3. 4. 2009, 18:49:52
Watchick
Joker Pokud to admin serveru nezakázal, tak můžete zvětšit velikost paměti v souboru .htaccess pomocí volby php_value: php_value memory_limit 30M |
||
Watchick Profil |
#13 · Zasláno: 3. 4. 2009, 19:04:37
Dá se pak nějak ověřit, zda-li to funguje, než že to zase vyhodí error?
|
||
Watchick Profil |
#14 · Zasláno: 3. 4. 2009, 19:08:59
Davex
Supr moc ;) memory_limit Local: 60M; Master 16M už to jde v pohodě :) |
||
Časová prodleva: 15 let
|
0