Norbert Hoeller wrote:
The problem is more likely to occur in a shared web
server environment
where you are limited in how much memory can be allocated to PHP. In my
case, my service provider claims that 20M is the maximum, although
phpinfo() reports 40M. As other posts have pointed out, it is the number
of pixels that determine how large the uncompressed image is. An other
factor would be the color depth: 8-, 16- or 24-bit. Displaying the images
natively is not a problem, since the images do not need to be
uncompressed. I have seen indications that ImageMagick requires less
memory than the standard GD library when creating thumbnails, but have not
been able to test myself (standard ImageMagick install will not work in a
shared environment).
There are three main benefits of using ImageMagick:
1) Better scaling quality
2) Since it runs out of process, if the scaling fails (eg due to memory
limits), the rest of the wiki keeps running. You just don't have a
working image.
3) For JPEG images (at least in some versions), ImageMagick can scale
large images without decompressing the entire file into memory/scratch
space first. (GIF and PNG images still require loading the whole thing.)
How much memory (or scratch disk) ImageMagick will actually use depends
on what mode it's been compiled in (8-bit, 16-bit, or 32-bit pixel
depth), but you don't always have to worry too much about that.
MediaWiki has a switch to disable scaling of very large images:
/**
* Don't thumbnail an image if it will use too much working memory
* Default is 50 MB if decompressed to RGBA form, which corresponds to
* 12.5 million pixels or 3500x3500
*/
$wgMaxImageArea = 1.25e7;
You can decrease that size to keep large images from breaking the entire
system... *however* it isn't applied to JPEG images due to ImageMagick's
nicer behavior with them.
To make it apply to JPEGs as well (eg for GD) you might have to hack out
the exception for now. Probably we should fix it to check this
automatically.
(In current MediaWiki this is in includes/media/Bitmap.php. In older
versions you'll probably find it in includes/Image.php)
-- brion vibber (brion @
wikimedia.org)