Problém s Image s většími fotografiemi
- RDPanek
- Člen | 189
Ahoj, nefunguje mi třída Image asi tak jak by měla.
Mám obrázek: JPEG, 4000×3000, 300dpi, 24bit sRGB, 2,29MB
a chci zmenšit fotografii funkcí:
Image::fromFile($copyFilePath)->resize(800, 600)->save($copyFilePath);
Vylítne mi 500 Internal Server Error ve Firebugu, ale zalozka obsah je prazdna.
Když fotografii zmenším: JPEG, 1000×750, 605kb
tak se fotografie úspěšně zmenší a uloží.
V čem by mohl být problém?, díky :-)
Editoval Gaudentius (21. 7. 2010 14:11)
- RDPanek
- Člen | 189
problém bude určitě zde:
if (self::$useImageMagick && (empty($info) || $info[0] * $info[1] > 9e5)) { // cca 1024x768
return new ImageMagick($file, $format);
}
pokud zakomentuji prvni a treti radek, dostanu pro zmenu vyjimku:
Exception
Unknown image type in file ‚W:\xampp\htdocs\aplikace\fotky\q{4c46d6ec8e2c3}__f{84}__testfotoaparatu2001.jpg‘ or ImageMagick not available.
- Vyki
- Člen | 388
Ta podmínka se snaží zjistit jestli ta fotka náhodou není větší než v rozlišení 1024×768. Pokud máš sdílený hosting tak přidělená paměť pro zpracování skriptu GD knihovnou (zmenšení velké fotky) nestačí. Proto ta podmínka. Zkus co to udělá když tu podmínku odstraníš. Pak se vždy zpracování toho obrázku nechá v režii knihovny GD. Osobně doporučuji ke zmenšování fotek používat třídu Imagick (pokud jí máš k dispozici). Ta umí pracovat s libovolně velkými soubory (paměťové nároky nejsou totiž v režii PHP).
- RDPanek
- Člen | 189
Vyki napsal(a):
Ta podmínka se snaží zjistit jestli ta fotka náhodou není větší než v rozlišení 1024×768. Pokud máš sdílený hosting tak přidělená paměť pro zpracování skriptu GD knihovnou (zmenšení velké fotky) nestačí. Proto ta podmínka. Zkus co to udělá když tu podmínku odstraníš. Pak se vždy zpracování toho obrázku nechá v režii knihovny GD. Osobně doporučuji ke zmenšování fotek používat třídu Imagick (pokud jí máš k dispozici). Ta umí pracovat s libovolně velkými soubory (paměťové nároky nejsou totiž v režii PHP).
No vyskočí vyjímka:
Exception
Unknown image type in file ‚W:\xampp\htdocs\aplikace\photogallery\q{4c46d6ec8e2c3}__f{84}__testfotoaparatu2001.jpg‘ or ImageMagick not available
- Michalek
- Člen | 211
Obrázek je větší než by se zvládl zpracovat (málo paměti), proto se chce použít imagemagick (or ImageMagick not available), který ale asi na serveru není.
Východisko? Zvětšit paměť v PHP (pokud to hosting umožňuje), nebo prosadit na serveru imagemagick nebo smůla.
Editoval Michalek (21. 7. 2010 17:15)
- marek.dusek
- Člen | 99
… or ImageMagick not available
Ehm, a mas tam vubec ImageMagick , kdyz ho chces pouzivat?
- RDPanek
- Člen | 189
nastavení php:
0 string(25) „upload_max_filesize: 120M“
1 string(17) „memory_limit: 10M“
2 string(25) „max_input_time: 2 minutes“
3 string(19) „post_max_size: 128M“
a v error_logu.php žádná zmínka o chybě a v accesu apache jen:
127.0.0.1 – – [22/Jul/2010:12:02:08 +0200] „GET /aplikace/multimedia/ HTTP/1.1“ 500 –
Editoval Gaudentius (22. 7. 2010 12:04)
- Vyki
- Člen | 388
Když se podíváš do PHP info tak tam vidíš něco podobného jako tohle: ?
[...]
imagick module enabled
imagick module version @PACKAGE_VERSION@
imagick classes Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
ImageMagick version ImageMagick 6.6.1-4 2010-04-14 Q16 http://www.imagemagick.org
[...]
Jde o to že tvůj hosting možná podporuje práci s ImageMagickem pomocí
PHP tříd Imagick, ImagickDraw, ImagickPixel,
ImagickPixelIterator. Na takových serverech je většinou
práce s ImageMagickem pomocí fce exec
zakázána. Ta třída ImageMagick v distribuci Nette pracuje
s ImageMagickem právě pomocí fce exec. Jinak v PHP infu
bys tu PHP extenzi pro práci s IM pomocí exec měl vidět jako
MagickWand (pokud je nainstalovaná).
Editoval Vyki (22. 7. 2010 12:39)
- Vyki
- Člen | 388
Já to řeším tak, že se většinu hostingů snažím mít u Onebit.cz, kde to (už) mají dokonce i správně nakonfigurované pro práci s PDF. Jinak nevím jak to snadno řešit. ..nevybírat hosting bez Imagicku.