{
// Get some more information about this file through our ImageFile class
$image = ImageFile::fromFileObject($this);
- if ($image->animated && !common_config('image', 'resize_animated')) {
+ if ($image->animated && is_null(common_config('thumbnail', 'animated'))) {
throw new UseFileAsThumbnailException($this->id);
}
'delete' => false,
'move' => true),
'image' =>
- array('jpegquality' => 85,
- 'resize_animated' => false), // true doesn't mean we _can_, only that we will _try_ (plugins might do it)
+ array('jpegquality' => 85),
'avatar' =>
array('server' => null,
'dir' => INSTALLDIR . '/avatar/',
array('crop' => false, // overridden to true if thumb height === null
'maxsize' => 1000, // thumbs with an edge larger than this will not be generated
'width' => 450,
- 'height' => 600),
+ 'height' => 600,
+ 'animated' => null), // null="UseFileAsThumbnail", false="take still image". true requires ImageMagickPlugin
'application' =>
array('desclimit' => null),
'group' =>
* php5-imagick
*
* Provides:
- * Animated image support (for image/gif at least)
+ * Animated GIF resize support
*
- * Suggestions:
- * After enabling the ImageMagick plugin, you might want to regenerate
- * thumbnails for the newly support formats. This is easiest done with
- * a script in the GNU social-bundled scripts directory:
- * $ php scripts/clean_thumbnails.php
+ * Comments:
+ * Animated GIF resize requires setting $config['thumbnail']['animated'] = true;
*
* Bugs:
* Not even ImageMagick is very good at resizing animated GIFs.
+ * We are not infinitely fast, so resizing animated GIFs is _not_ recommended.
*/
class ImageMagickPlugin extends Plugin
{
- // configurable plugin options must be declared public
- public $resize_animated = null;
-
- public function initialize()
- {
- parent::initialize();
-
- if (is_null($this->resize_animated)) {
- $this->resize_animated = common_config('image', 'resize_animated');
- }
- }
-
/**
* @param ImageFile $file An ImageFile object we're getting metadata for
* @param array $info The response from getimagesize()
public function onStartResizeImageFile(ImageFile $imagefile, $outpath, array $box) {
// So far we only take over the resize for IMAGETYPE_GIF
- // (and only animated for gifs!)
- if ($imagefile->type == IMAGETYPE_GIF && $imagefile->animated) {
- if (!$this->resize_animated) {
- // Don't resize if not desired, due to CPU/time limitations
- return false;
- }
+ // (and only animated for gifs! (and only if we really want to resize the animation!))
+ if ($imagefile->type == IMAGETYPE_GIF && $imagefile->animated && common_config('thumbnail', 'animated')) {
$magick = new Imagick($imagefile->filepath);
$magick = $magick->coalesceImages();
$magick->setIteratorIndex(0);
'homepage' => 'http://gnu.io/social',
'rawdescription' =>
// TRANS: Plugin description.
- _m('Use ImageMagick for better image support.'));
+ _m('Use ImageMagick for some more image support.'));
return true;
}
}
-