Hi everyone.
tl;dr: Can we do https://gerrit.wikimedia.org/r/164476
Now that the pre-requisite patches for using VIPS with tiff has been merged (Woo!), lets umm use it.
So for those who don't know what vips is, vips is an alternative to image magick which can scale certain file formats in essentially constant memory (Or probably to be pedantic, linear in the number of pixels in the resulting file, instead of linear in the number of pixels in the source). This means we would be able to make thumbnails no matter how big the source file is. Which is good because we have lots of very high resolution tiff files, such as [[File:Zoomit2.tif]] and [[File:Zentralbibliothek Zürich - Mittelalterliche Stadt - 000005203.tif]]. We already use VIPS to scale png files larger than 20 megapixels, and non-progressive jpeg files can be scaled efficiently with image magick, so tiff is the current pain point in terms of scaling limits (although GIF is also painful).
I would like to propose the following:
First we experiment with turning it on for files > 50 megapixels. Currently we do not even try to render such files, so I doubt this will cause any community angst. To that end I proposed a patch ( https://gerrit.wikimedia.org/r/164476 ) that uses the following settings:
array( 'conditions' => array( 'mimeType' => 'image/tiff', 'minShrinkFactor' => 1.2, 'minArea' => 5e7, ), 'sharpen' => array( 'sigma' => 0.8 ), )
This will turn the feature on for big files (which currently do not render), and also enable sharpening (Most tiff images benefit from it and the community has asked for it repeatedly, I think its less disruptive to enable sharpening at the same time as VIPS, instead of two separate changes to tiff rendering).
I would propose we let that sit for a little bit. We should than have a community discussion (With the commons community, since its hard to have a discussion with every community, and commons (+esp. Glams) are the people who care the most about this) to see if the community likes that. Hopefully if all is well we could move to stage 2, which would be something like:
array( 'conditions' => array( 'mimeType' => 'image/tiff', 'minShrinkFactor' => 1.2, ), 'sharpen' => array( 'sigma' => 0.8 ), ), array( 'conditions' => array( 'mimeType' => 'image/tiff', ), ),
Anyways, thoughts. Does this sound like a good plan? Someone want to be bold and deploy my change ;)
--bawolff