gpt4 book ai didi

WPF 动画 GIF 使用过多内存来显示大 GIF 图像

转载 作者:行者123 更新时间:2023-12-03 07:41:02 28 4
gpt4 key购买 nike

我想使用库显示 GIF WPF Animated GIF 。但是,当设置属性 PictureSource 时,进程内存会从 208MB 增加到 1GB。为什么?

enter image description here

XAML

<Image Name="content" MaxHeight="240" MaxWidth="340" 
RenderOptions.BitmapScalingMode="LowQuality"
Width="340" Height="240"
MinWidth="340" MinHeight="240"
gif:ImageBehavior.AutoStart="True"
gif:ImageBehavior.AnimatedSource="{Binding Path=PictureSource}">
<Image.Stretch>
<MultiBinding Converter="{StaticResource ImageStretchConverter}">
<Binding Path="PictureSource" />
<Binding ElementName="content" Path="Source.Width" />
<Binding ElementName="content" Path="Source.Height" />
</MultiBinding>
</Image.Stretch>
<Image.BitmapEffect>
<BlurBitmapEffect Radius="0" />
</Image.BitmapEffect>
<Image.CacheMode>
<BitmapCache EnableClearType="True"
RenderAtScale="0.2"
SnapsToDevicePixels="True"/>
</Image.CacheMode>
<!--<Image.Source>
<BitmapImage StreamSource="{Binding Path=PictureSource}" UriSource="{Binding Path=PictureSource}"
DecodePixelWidth="340" DecodePixelHeight="240"/>
</Image.Source>-->
</Image>

图像拉伸(stretch)转换器

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
string path = values[0] as string;
if (string.IsNullOrEmpty(path) || values[1] == DependencyProperty.UnsetValue || values[2] == DependencyProperty.UnsetValue) {
return Stretch.None;
}

if (Path.GetExtension(path).ToLower() == ".gif") {
double width = (double)values[1];
double height = (double)values[2];
if (width > Configuration.MaxThumbnailResolution || height > Configuration.MaxThumbnailResolution) {
return Stretch.UniformToFill;
}
}

return Stretch.None;
}

原始 GIF 图像的尺寸相当大。这可能会导致问题。如何设置 AnimatedSourceDecodePixelWidthDecodePixelHeight

最佳答案

您读过这篇有关该问题的文章吗? https://www.thomaslevesque.com/2015/01/17/a-new-library-to-display-animated-gifs-in-xaml-apps/

该问题很可能是由开发人员在创建库时犯下的错误引起的。您可以在文章中阅读所有内容,但需要简短的解释。

所有帧都在内存中预先渲染,对于大型 gif 来说这是一个大问题。遗憾的是,当使用相同的库而不重新编程时,确实没有一个简单的解决方案。

我建议尝试使用XamlAnimatedGif

https://github.com/thomaslevesque/XamlAnimatedGif

(由同一开发者制作)

关于WPF 动画 GIF 使用过多内存来显示大 GIF 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45768644/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com