.NETには、プロパティー(フレーム間の遅延など)を保持したまま、GIFファイルのサイズを変更できるビルトイン機能が存在しません。そのため、サイズを変更した場合、ファイルの最初のフレームのみが表示されるようになります。したがって、Sitecoreを使用してサイズを変更すると、アニメーションGIFファイルのアニメが動かなくなる場合があります。
using Microsoft.Extensions.DependencyInjection; using Sitecore.Abstractions; using Sitecore.DependencyInjection; using Sitecore.Diagnostics; using Sitecore.Resources.Media; using System; public class GifSkippingResizeProcessor : Sitecore.Resources.Media.ResizeProcessor { public ResizeProcessor() : base(ServiceLocator.ServiceProvider.GetRequiredService<BaseMediaManager>(), ServiceLocator.ServiceProvider.GetRequiredService<BaseLog>()) { } public new void Process(GetMediaStreamPipelineArgs args) { Assert.ArgumentNotNull(args, "args"); if (!string.Equals(args.MediaData.MimeType, "image/gif", StringComparison.OrdinalIgnoreCase)) { base.Process(args); } } }
<?xml version="1.0" encoding="utf-8" ?> <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> <sitecore> <pipelines> <getMediaStream> <processor patch:instead="*[@type='Sitecore.Resources.Media.ResizeProcessor, Sitecore.Kernel']" type="Custom.Resources.Media.GifSkippingResizeProcessor, Custom.Assembly" resolve="true"/> </getMediaStream> </pipelines> </sitecore> </configuration>