更加安全的图片URI加载

This commit is contained in:
ZouJin 2023-10-13 20:02:48 +08:00
parent 504efba24b
commit 3e673083b6
4 changed files with 28 additions and 8 deletions

View File

@ -133,7 +133,7 @@ namespace VPet_Simulator.Windows.Interface
/// </summary>
/// <param name="imagename">图片名称</param>
/// <returns>图片资源,如果未找到则退回错误提示图片</returns>
public BitmapImage FindImage(string imagename) => new BitmapImage(FindImageUri(imagename));
public BitmapImage FindImage(string imagename) => NewSafeBitmapImage(FindImageUri(imagename));
public Uri FindImageUri(string imagename)
{
@ -158,13 +158,33 @@ namespace VPet_Simulator.Windows.Interface
string source = FindSource(imagename);
if (source == null)
{
return new BitmapImage(FindImageUri(superior));
return NewSafeBitmapImage(source);
}
return new BitmapImage(new Uri(source));
return NewSafeBitmapImage(source);
}
/// <summary>
/// 图片设置 (eg:定位锚点等)
/// </summary>
public LpsDocument ImageSetting = new LpsDocument();
/// <summary>
/// 更加安全的图片URI加载
/// </summary>
/// <param name="source">图片源</param>
/// <returns>BitmapImage</returns>
public static BitmapImage NewSafeBitmapImage(string source) => NewSafeBitmapImage(new Uri(source));
/// <summary>
/// 更加安全的图片URI加载
/// </summary>
/// <param name="source">图片源</param>
/// <returns>BitmapImage</returns>
public static BitmapImage NewSafeBitmapImage(Uri source)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
bi.UriSource = source;
bi.EndInit();
return bi;
}
}
}

View File

@ -61,7 +61,7 @@ namespace VPet_Simulator.Windows
/// <summary>
/// 版本号
/// </summary>
public int version { get; } = 108;
public int version { get; } = 109;
/// <summary>
/// 版本号
/// </summary>
@ -144,7 +144,7 @@ namespace VPet_Simulator.Windows
if (hashcheckimg == null)
{
hashcheckimg = new Image();
hashcheckimg.Source = new BitmapImage(new Uri("pack://application:,,,/Res/hash.png"));
hashcheckimg.Source = ImageResources.NewSafeBitmapImage("pack://application:,,,/Res/hash.png");
hashcheckimg.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
hashcheckimg.ToolTip = "是没有修改过存档/使用超模MOD的玩家专属标志".Translate();
Grid.SetColumn(hashcheckimg, 4);

View File

@ -27,6 +27,7 @@ using static VPet_Simulator.Core.GraphInfo;
using System.Globalization;
using static VPet_Simulator.Windows.Interface.ExtensionFunction;
using LinePutScript.Dictionary;
using System.Windows.Media.Imaging;
namespace VPet_Simulator.Windows
{
@ -65,7 +66,6 @@ namespace VPet_Simulator.Windows
CultureInfo.CurrentCulture = new CultureInfo(CultureInfo.CurrentCulture.Name);
CultureInfo.CurrentCulture.NumberFormat = new CultureInfo("en-US").NumberFormat;
//判断是不是Steam用户,因为本软件会发布到Steam
//在 https://store.steampowered.com/app/1920960/VPet
try

View File

@ -331,7 +331,7 @@ namespace VPet_Simulator.Windows
runMODAuthor.Text = mod.Author;
runMODGameVer.Text = CoreMOD.INTtoVER(mod.GameVer);
runMODGameVer.Foreground = Function.ResourcesBrush(Function.BrushType.PrimaryText);
ImageMOD.Source = new BitmapImage(new Uri(mod.Path.FullName + @"\icon.png"));
ImageMOD.Source = ImageResources.NewSafeBitmapImage(mod.Path.FullName + @"\icon.png");
if (mod.GameVer < mw.version)
{
if (mod.GameVer / 10 == mw.version / 10)