Hello,
ich ahbe mich damit schon mal länger auseinandergesetzt.
Das ist zwar eher empirisch entstanden, denn exakte und verbriefte Angaben konnte ich bisher nicht finden für die Bildtypen.
http://forum.de.selfhtml.org/archiv/2008/3/t168961/#m1102978
#---------------------------------------------------
function image_check_memory($_imageinfo, $memleft = MEMORY_LEFT) ## X, Y, bits, channels
{
## fehlende Angaben durch Raten ergänzen
if (!isset($_imageinfo['bits'])) $_imageinfo['bits'] = 8;
if (!isset($_imageinfo['channels']) and $_imageinfo['bits'] == 24) $_imageinfo['channels'] = 1;
if (!isset($_imageinfo['channels'])) $_imageinfo['channels'] = 3;
$memoryNeeded = round(($_imageinfo[0] * $_imageinfo[1] * $_imageinfo['bits'] * $_imageinfo['channels'] / 8 + 65536) * 1.65);
$memoryLimit = intval(ini_get('memory_limit')) * 1048576;
if ((memory_get_usage() + $memoryNeeded) + $memleft > $memoryLimit)
{
error_log('IMAGE_MEMORY usage: '.memory_get_usage().", needed: $memoryNeeded, limit: $memoryLimit\n", 3, '/var/log/web04/php_error_log');
return false;
}
return true;
}
#---------------------------------------------------
und eine weitere Funktion:
#---------------------------------------------------
function get_memory_limit()
{
$memory_limit_str = ini_get('memory_limit');
$memval = intval($memory_limit_str);
if ($memval == -1) return MAX_MEMORY;
if (stripos($memory_limit_str, 'K'))
{
return $memval * 1024;
}
elseif(stripos($memory_limit_str, 'M'))
{
return $memval * 1024 * 1024;
}
elseif(stripos($memory_limit_str, 'G'))
{
return $memval * 1024 * 1024 * 1024;
}
return $memval;
}
#--------------------------------------------------
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg