{"id":1224,"date":"2025-12-02T21:00:01","date_gmt":"2025-12-02T20:00:01","guid":{"rendered":"https:\/\/darrigan.net\/blog\/?p=1224"},"modified":"2025-12-07T14:02:20","modified_gmt":"2025-12-07T13:02:20","slug":"display-animated-gif-images-in-collectiveaccess","status":"publish","type":"post","link":"https:\/\/darrigan.net\/blog\/display-animated-gif-images-in-collectiveaccess\/","title":{"rendered":"Display animated GIF images in CollectiveAccess"},"content":{"rendered":"<p>In <a href=\"https:\/\/collectiveaccess.org\/\" target=\"_blank\" rel=\"noopener\">CollectiveAccess<\/a> (CA)\u00a0<em>Pawtucket2<\/em> part (public site), GIF images are not animated by default. Here is a way to let GIF images to be animated.<\/p>\n<p><!--more--><\/p>\n<p>This tutorial is tested for <a href=\"https:\/\/collectiveaccess.org\/\" target=\"_blank\" rel=\"noopener\">CollectiveAccess<\/a> 1.7.17 and 2.0.9 but may work with intermediate and later versions.<\/p>\n<h2>Modifications in Providence<\/h2>\n<h3>1. media_processing.conf<\/h3>\n<p>The configuration file <span style=\"font-family: courier new, courier, monospace;\">media_processing.conf<\/span> (in Providence&rsquo;s <span style=\"font-family: courier new, courier, monospace;\">app\/conf<\/span> or <span style=\"font-family: courier new, courier, monospace;\">app\/conf\/local<\/span> directory) is used to set how any media file is treated or transformed before saving.<\/p>\n<p>GIF images should be treated differently as other images format. They must be saved in GIF format.<\/p>\n<p>In this file, create a new line for this mimetype, named <span style=\"font-family: courier new, courier, monospace;\">image_gif<\/span> for example:<\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\"> MEDIA_ACCEPT = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">image\/jpeg = image,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"><span style=\"background-color: #ccffcc;\">#<\/span> image\/gif = image,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">image\/gif = image_gif,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">image\/png = image,<br \/>\n&#8230;<br \/>\n}<\/span><\/p>\n<p>In the <span style=\"font-family: courier new, courier, monospace;\">MEDIA_TYPE = {&#8230;}<\/span> part, insert this new part with same name, just after the <span style=\"font-family: courier new, courier, monospace;\">image<\/span> part:<\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\"> image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0QUEUE = mediaproc, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0QUEUED_MESSAGE = _(\u00ab\u00a0Image is being processed\u00a0\u00bb),<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0QUEUE_USING_VERSION = original,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0VERSIONS = { <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0icon = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0RULE = rule_icon_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0iconlarge = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_iconlarge_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0tiny = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_tiny_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0thumbnail = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_thumbnail_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0widethumbnail = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_widethumbnail_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0small = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_small_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0preview = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_preview_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0preview170 = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_preview170_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0widepreview = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_widepreview_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0medium = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_medium_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0mediumlarge = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_mediumlarge_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0large = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_large_image_gif, VOLUME = images,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0page = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_page_image_gif, VOLUME = images, BASIS = large,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0original = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_original_image_gif, VOLUME = images,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0USE_EXTERNAL_URL_WHEN_AVAILABLE = &lt;use_external_url_when_available&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0tilepic = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0RULE = rule_tilepic_image_gif, VOLUME = tilepics, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0QUEUE_WHEN_FILE_LARGER_THAN = &lt;queue_threshold_in_bytes&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0MEDIA_VIEW_DEFAULT_VERSION = tilepic,<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0MEDIA_PREVIEW_DEFAULT_VERSION = small<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><\/p>\n<p>And in the <span style=\"font-family: courier new, courier, monospace;\">MEDIA_TRANSFORMATION_RULES = {&#8230;}<\/span> part, add related rules:<\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\"> # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"># Image rules for GIF<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_icon_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 72, height = 72, mode = fill_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_iconlarge_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 250, height = 250, mode = fill_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_tiny_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0width = 72, height = 72, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_thumbnail_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0 \u00a0width = 120, height = 120, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<br \/>\n<\/span><span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_widethumbnail_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 110, height = 75, mode = fill_box, crop_from = center, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">}, <\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_preview170_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 170, height = 170, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_widepreview_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 200, height = 120, mode = fill_box, crop_from = center, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_preview_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 180, height = 180, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_small_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 240, height = 240, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_medium_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 400, height = 400, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_mediumlarge_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 580, height = 450, mode = bounding_box, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_large_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 700, mode = width, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_page_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SCALE = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0width = 1000, mode = width, antialiasing = 0.5<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {format = image\/gif}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_original_image_gif = {},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">rule_tilepic_image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0SET = {tile_mimetype = image\/gif, format = image\/tilepic}<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">},<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3>2. media_display.conf<\/h3>\n<p>The configuration file <span style=\"font-family: courier new, courier, monospace;\">media_display.conf<\/span> (in Providence&rsquo;s <span style=\"font-family: courier new, courier, monospace;\">app\/conf<\/span> or <span style=\"font-family: courier new, courier, monospace;\">app\/conf\/local<\/span> directory) is used to assign which <em>viewer<\/em> is used for which <em>image format<\/em>.<\/p>\n<p>In the <span style=\"font-family: courier new, courier, monospace;\">default_viewers = {&#8230;}<\/span> part of this file, one can find different sub-parts named: <span style=\"font-family: courier new, courier, monospace;\">images<\/span>, <span style=\"font-family: courier new, courier, monospace;\">video<\/span>, <span style=\"font-family: courier new, courier, monospace;\">quicktimevr<\/span>, <span style=\"font-family: courier new, courier, monospace;\">audio<\/span>, <span style=\"font-family: courier new, courier, monospace;\">pdf<\/span>, <span style=\"font-family: courier new, courier, monospace;\">text<\/span>, <span style=\"font-family: courier new, courier, monospace;\">3d<\/span>, <span style=\"font-family: courier new, courier, monospace;\">360<\/span>, <span style=\"font-family: courier new, courier, monospace;\">binary<\/span>.<\/p>\n<p>GIF format appears in the <span style=\"font-family: courier new, courier, monospace;\">images<\/span> sub-part, as defined in the <span style=\"font-family: courier new, courier, monospace;\">mimetypes<\/span> list: <span style=\"font-family: courier new, courier, monospace;\">image\/gif<\/span><\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\"> mimetypes = {<span style=\"background-color: #ccffcc;\">image\/gif<\/span>, image\/jpeg, image\/tiff, image\/png, image\/x-dcraw, image\/x-psd, image\/x-dpx, image\/jp2, image\/x-adobe-dng, image\/x-dcraw, application\/dicom, image\/bmp, image\/x-bmp, image\/webp},<\/span><\/p>\n<p>and assigned viewer is TileViewer:<\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\"> viewer = TileViewer<\/span><\/p>\n<p>But it seems that <em>TileViewer<\/em> isn&rsquo;t displaying correctly animated GIF images.<\/p>\n<p><span class=\"HwtZe\" lang=\"en\"><span class=\"jCAhz ChMk0b\"><span class=\"ryNqvb\">To resolve this issue, I suggest switching to <em><strong>QTVR<\/strong><\/em> as this viewer.<\/span><\/span><\/span><\/p>\n<p>To do so, create a new part in <span style=\"font-family: courier new, courier, monospace;\">default_viewers<\/span> dedicated to GIF format, which we will call <span style=\"font-family: courier new, courier, monospace;\">image_gif<\/span>. Remove the mimetype <span style=\"font-family: courier new, courier, monospace;\">image\/gif<\/span> from the list of mimetypes of <span style=\"font-family: courier new, courier, monospace;\">images<\/span> part and add it in the list of mimetypes for <span style=\"font-family: courier new, courier, monospace;\">image_gif<\/span>, like this:<\/p>\n<p><span style=\"font-family: courier new, courier, monospace;\">default_viewers = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">\u00a0 \u00a0 \u00a0image_gif = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0mimetypes = {image\/gif},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0viewer = QTVR<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">\u00a0 \u00a0 \u00a0},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0images = {<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\"><span style=\"background-color: #ffcc99;\">#<\/span>\u00a0 \u00a0 \u00a0 \u00a0 mimetypes = {<span style=\"background-color: #ffcc99;\">image\/gif,<\/span> image\/jpeg, image\/tiff, image\/png, image\/x-dcraw, image\/x-psd, image\/x-dpx, image\/jp2, image\/x-adobe-dng, image\/x-dcraw, application\/dicom, image\/bmp, image\/x-bmp},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace; background-color: #ccffcc;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0mimetypes = {image\/jpeg, image\/tiff, image\/png, image\/x-dcraw, image\/x-psd, image\/x-dpx, image\/jp2, image\/x-adobe-dng, image\/x-dcraw, application\/dicom, image\/bmp, image\/x-bmp, image\/webp},<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0viewer = TileViewer<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0},<br \/>\n<\/span><span style=\"font-family: courier new, courier, monospace;\">\u00a0 \u00a0 \u00a0&#8230;<br \/>\n&#8230;<br \/>\n<\/span><span style=\"font-family: courier new, courier, monospace;\">}<\/span><\/p>\n<p>Flush the cache files. Add a GIF image in an object representation to see if it works.<\/p>\n<h2>Modifications in Pawtucket<\/h2>\n<p>The configuration file <span style=\"font-family: courier new, courier, monospace;\">media_display.conf<\/span> (in Pawtucket&rsquo;s <span style=\"font-family: courier new, courier, monospace;\">app\/conf<\/span> or <span style=\"font-family: courier new, courier, monospace;\">app\/conf\/local<\/span> directory) is used to assign which <em>viewer<\/em> is used for which <em>image format<\/em>.<\/p>\n<p>Apply the same modifications as seen above for the Providence.<\/p>\n<p>Flush the cache files and test it.<\/p>\n<p>For an example of application see this object:<\/p>\n<p><a href=\"https:\/\/collections.univ-pau.fr\/pub\/index.php\/Detail\/objects\/605\" target=\"_blank\" rel=\"noopener\">https:\/\/collections.univ-pau.fr\/pub\/index.php\/Detail\/objects\/605<\/a><\/p>\n<p>Choose the second image:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium\" src=\"https:\/\/collections.univ-pau.fr\/media\/collectiveaccess\/images\/2\/9\/38557_ca_object_representations_media_2902_icon.gif\" alt=\"Ordisavant Yeno\" width=\"72\" height=\"72\" \/><\/p>\n<p>You should see the animated GIF:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-medium\" src=\"https:\/\/collections.univ-pau.fr\/media\/collectiveaccess\/images\/2\/9\/67807_ca_object_representations_media_2902_original.gif\" alt=\"Ordisavant Yeno\" width=\"720\" height=\"720\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In CollectiveAccess (CA)\u00a0Pawtucket2 part (public site), GIF images are not animated by default. Here is a way to let GIF images to be animated.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[39],"tags":[121,122,46],"_links":{"self":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1224"}],"collection":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/comments?post=1224"}],"version-history":[{"count":16,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1224\/revisions"}],"predecessor-version":[{"id":1240,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1224\/revisions\/1240"}],"wp:attachment":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/media?parent=1224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/categories?post=1224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/tags?post=1224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}