Stránka 1 z 1

PHP a GD

Napsal: pát 26. lis 2010, 21:22
od arxeiss
Zdravím, po nějaké době mám zase dotaz, jak si PHP alokuje pamět při práci s obrázky. Vím, že to převádí jako většina (všechny ?) editory do nekomprimované verze, podobné BMP, takže každý pixel zabere 3bajty, pokud se nepletu, takže obrázek 5184 * 3456 by měl zabrat cca 51MB což mi např Photoshop nebo IrfanView ukážou, ale když si vypíšu vyuižití paměti v PHP tak mi u tohoto obrázku napsal 81MB nebo 84 teď nevím...
Jak to tedy počítá v PHPčku, ať vím jaké maximální rozměry tam mám povolit...

Edit:\\ Tak zjevně jedne pixel zabere 4B, což ovšem stále nevyjde těch 87MB, teď jsem to zkusil znova...

Edit2:\\ Zkusil jsem vytvořit obrázek 8000*8000 což by mělo vycházet 256MB, podle TOHO ale zabere mi to 313.5MB

Re: PHP a GD

Napsal: ned 28. lis 2010, 22:42
od l_iNu$
GD si alokuje na pixel 32b + 8b na alpha kanál. Takže by to mělo být 8000×8000×5.

Re: PHP a GD

Napsal: pon 29. lis 2010, 08:25
od arxeiss
Zatím jsi jediný kdo mi řekl proč je to tolik, ale přišel jsem na to, že pro výpočet paměti která GD si alokuje platí tyto pravidla:
JPG: šířka * výška * 5,2
GIF: šířka * výška * 2,2
PNG: šířka * výška * 8,2
Teda JPG jsem našel http://cz.php.net/manual/en/function.im ... ecolor.php Druhý komentář odvrchu, a GIF a PNG jsem si odvodil když mi to nevycházelo. Když vytvořím obrázek pomocí imagecreateTrueColor tak si alokuje vždy jako JPG a při ukládání do PNG myslím nealokuje více, to budu muset jěště zjisti.