/** * Estimate an upper limit of the processable image dimensions. * This will be in the scale of ~40 MP for 256 MB memory_limit and * ~16 MP for 128 MB. See Okapi::init_internals() for current memory_limit. */ private static function max_pixels($base64_image) { $bytes_per_pixel = 5; # GD needs 5 bytes per pixel for "true color" $available_memory = Okapi::php_ini_get_bytes('memory_limit') - memory_get_usage(); $available_memory -= 16 * 1024 * 1024; # reserve $available_memory -= strlen($base64_image); # will be copied for EXIF processing $available_memory -= 3 * $bytes_per_pixel * Settings::get('IMAGE_MAX_PIXEL_COUNT'); # processing buffers return floor($available_memory / $bytes_per_pixel); }