We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 67d09532 authored by mattl's avatar mattl

Improved animated image thumbnail freedom of choice

Default is now to take still thumbnails of animated GIFs and then
show them as originals in an AttachmentListItem. The still frames
are mostly used with front-ends like qvitter.
parent 7beec74f
......@@ -382,12 +382,16 @@ class File extends Managed_DataObject
*
* @return File_thumbnail
*/
public function getThumbnail($width=null, $height=null, $crop=false)
public function getThumbnail($width=null, $height=null, $crop=false, $force_still=true)
{
// Get some more information about this file through our ImageFile class
$image = ImageFile::fromFileObject($this);
if ($image->animated && is_null(common_config('thumbnail', 'animated'))) {
throw new UseFileAsThumbnailException($this->id);
if ($image->animated && !common_config('thumbnail', 'animated')) {
// null means "always use file as thumbnail"
// false means you get choice between frozen frame or original when calling getThumbnail
if (is_null(common_config('thumbnail', 'animated')) || !$force_still) {
throw new UseFileAsThumbnailException($this->id);
}
}
if ($width === null) {
......
......@@ -113,7 +113,8 @@ class AttachmentListItem extends Widget
case 'image/jpg':
case 'image/jpeg':
try {
$thumb = $this->attachment->getThumbnail();
// Tell getThumbnail that we can show an animated image if it has one (4th arg, "force_still")
$thumb = $this->attachment->getThumbnail(null, null, false, false);
$this->out->element('img', array('class'=>'u-photo', 'src' => $thumb->getUrl(), 'alt' => ''));
} catch (UseFileAsThumbnailException $e) {
$this->out->element('img', array('class'=>'u-photo', 'src' => $e->file->getUrl(), 'alt' => $e->file->title));
......
......@@ -258,7 +258,7 @@ $default =
'maxsize' => 1000, // thumbs with an edge larger than this will not be generated
'width' => 450,
'height' => 600,
'animated' => null), // null="UseFileAsThumbnail", false="take still image". true requires ImageMagickPlugin
'animated' => false), // null="UseFileAsThumbnail", false="can use still frame". true requires ImageMagickPlugin
'application' =>
array('desclimit' => null),
'group' =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment