Autor Zpráva
rosta
Profil
Ahoj můžete mi někdo poradít ?
Při vkládání fotek menší než 1 MB je vše v pořádku Fotku to načte a zmenší .. Problém nastává jakmile chci nahrát větsí foto příklad 2,5 MB tak to hází chybu



Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 14592 bytes)
Povolená velikost paměti 33554432 bajtů vyčerpány (pokusil přidělit 14592 bajtů)

v php.ini mam nastaveno:
========================
upload_max_filesize 24M
memory_limit 32M
post_max_size 16M

Dá se zmenšování fotek udělat i jinak ? Moc díky za pomoc
pcmanik
Profil
rosta:
Používaš grafickú knižnicu GD, alebo imagemagick? Imagemagick má totiž pamäť nezávislú na nastavení php. A nejaké typy ako ešte viac zoptimalizovať spracovanie pre imagemagick môžeš nájsť tu.
Samozrejmne najjednoduchšia cesta je navíšiť memory_limit, avšak to vám hosting nemusí povoliť.
Joker
Profil
Stejný problém jsem kdysi řešil.
Asi jediné řešení je to zjevné, prostě zvýšit memory_limit. To samozřejmě neodstraní problém jako takový, ale přesune ho až na větší obrázky.

Problém jako takový jde odstranit jen těžko. Při zmenšování fotky rovnou v počítači se to neděje proto, že tam je k dispozici mnohonásobně víc paměti (32MB paměti je dneska málo i na levný mobil).
rosta
Profil
DÍKY moc limit mi nenavíší ... tak hledám jiné řešení A co se týče knihovny to vůbec nevím jak to zjistím ??? díky
juriad
Profil
Ukaž kód, který používáš pro zmenšování obrázků. Každá knihovna má jiné funkce pro manipulaci s obrázky.
Str4wberry
Profil
Pokud stačí hodně malé náhledy, dá se je dost rychle a možná tedy i nenáročně získávat z EXIFu.

Další možnost je zmenšování na straně klienta — v některých prohlížečích to funguje.
rosta
Profil
kod pro zmenšení

<?
$max_size = 160;
$cesta="foto_inzerce/".$nextid."_".$snimek.".jpg";
$cil="foto_inzerce/".$nextid."_".$snimek."_n.jpg";
$img_zdroj = ImageCreateFromJPEG ($cesta);
$width = ImageSX ($img_zdroj);
$height = ImageSY ($img_zdroj);
if ($width > $height)
{
$velx = $max_size;
$vely = $max_size * ($height / $width);
}
elseif ($width < $height)
{
$velx = $max_size * ($width / $height);
$vely = $max_size;
}
elseif ($width == $height)
{
$velx = $max_size;
$vely = $max_size;
}
SetType ($velx, "integer");
SetType ($vely, "integer");
$img_cil = ImageCreateTrueColor($velx,$vely);

ImageCopyResized($img_cil,$img_zdroj,0,0,0,0,$velx,$vely,$width,$height);
ImageJPEG ($img_cil,$cil);
ImageDestroy($img_zdroj);
ImageDestroy($img_cil);
?>
Alphard
Profil
Je to klasický script pro zmenšení obrázku, jestli se má pracovat s GD, nic se s tím nevymyslí.
Je to popsané i v Nejčastější potíže s PHP (FAQ) » Překročení paměti, kde je odkaz na kalkulačku pro výpočet potřebné paměti.
Mimochodem, lepšího výsledku se dosáhne použitím funkce imagecopyresampled(), ale pokud jde o paměť, tak si samozřejmě nepomůžete.
rosta
Profil
zkusím vše jen aby to fungovalo .Jak myslíte na stanici?


jak bych to měl udělat přes knihovnu imagemagick nejaký skript by tu nebyl moc všem díky ...
Alphard
Profil
Internet je plný zdrojů, jak zmenšit obrázek...
V manuálu najdete funkci pro změnu velikosti Imagick::resizeImage, v komentářích je i příklad. Přímo na vytváření náhledu je metoda Imagick::thumbnailImage. Další možnosti jako výřezy jsou uvedeny např. v Crop and Resize Images with ImageMagick.
rosta
Profil
moc díky

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: