.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>