非常沮丧。
我只是通过代码加载jpg图片时出现问题。如果我在XAML中加载它们,则正确加载相同的图像。 e.g:
<Image Source="Assets/Images/Backgrounds/ChangeSelectionImg.jpg" />
但是这段代码并没有加载相同的图片,但是对于PNG图片效果很好:
var uriSource = new Uri(@"C:\Work\TestApp\Assets\Images\Backgrounds\ChangeSelectionImg.jpg", UriKind.Absolute);
var bmi = new BitmapImage();
bmi.BeginInit();
bmi.CacheOption = BitmapCacheOption.OnLoad;
bmi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bmi.UriSource = uriSource;
bmi.EndInit();
var image = new Image
{
Width = 187,
Height = 700,
StretchDirection = StretchDirection.DownOnly,
Stretch = Stretch.Fill,
Source = bmi
};
SpImage.Children.Add(image);
我还没有尝试使用Relative URI,因为我要加载的实际图像是应用程序外部的文件夹。图像路径将在数据库中指定。
甚至按照建议here尝试了BitmapCreateOptions.IgnoreColorProfile
选项,但这也不起作用。
以下代码适用于PNG图像,但不适用于jpg:
var imagePath = "some absolute path to an image";
var uriSource = new Uri(imagePath, UriKind.Absolute);
var image = new Image
{
Width = 187,
Height = 700,
StretchDirection = StretchDirection.DownOnly,
Stretch = Stretch.Fill,
Source = new BitmapImage(uriSource)
};
我现在失去了想法。非常感谢任何帮助。
答案 0 :(得分:0)
因为我无法弄清楚为什么会这样,没有人帮忙:( 为了防止其他人以同样的方式陷入困境,我决定这样做:
var bannerImg = new ImageBrush(new BitmapImage(uriSource))
{
Stretch = Stretch.Uniform
};
SpImage.Background = bannerImg;
我将StackPanel的背景图像设置为图像。
我仍然愿意接受建议。
答案 1 :(得分:0)
BitMapImage不支持BitMapMetaData,它抛出System.NotSupported异常,使用JpegBitmapDecoder将解决此问题。