Problém s Image s většími fotografiemi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
RDPanek
Člen | 189
+
0
-

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
+
0
-

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.

RDPanek
Člen | 189
+
0
-

jak mám rozumět konstantě 9e5?

if (self::$useImageMagick && (empty($info) || $info[0] * $info[1] > 9e5)) { // cca 1024x768
Vyki
Člen | 388
+
0
-

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).

Vyki
Člen | 388
+
0
-

Gaudentius napsal(a):

jak mám rozumět konstantě 9e5?

To je exponenciální zápis čísla.

RDPanek
Člen | 189
+
0
-

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 | 210
+
0
-

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
+
0
-

or ImageMagick not available

Ehm, a mas tam vubec ImageMagick , kdyz ho chces pouzivat?

RDPanek
Člen | 189
+
0
-

marek.dusek napsal(a):

or ImageMagick not available

Ehm, a mas tam vubec ImageMagick , kdyz ho chces pouzivat?

Hm, je

RDPanek
Člen | 189
+
0
-

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
+
0
-

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)

RDPanek
Člen | 189
+
0
-

no – tedy – jak to tedy vyřešit? protože se nemůžu spolehnout na to, že na hostingu toto rozšíření bude.

Stále mě zaráží prázdná stránka bez chybový hlášení, nebo tak něco

Editoval Gaudentius (22. 7. 2010 12:40)

Vyki
Člen | 388
+
0
-

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.

iguana007
Člen | 970
+
0
-

Já to řeším tak, že jsem si pořídil vlastní server a už nic neřeším a mám naprosto volnou ruku – forever and ever :D

RDPanek
Člen | 189
+
0
-

iguana007 napsal(a):

Já to řeším tak, že jsem si pořídil vlastní server a už nic neřeším a mám naprosto volnou ruku – forever and ever :D

:-D :-D :-D
já mám taky, ale bez tunelování se do něj nedostanu :-D