你好,我正在尝试对带有透明背景的PNG图像进行缩放。我需要它变成250x250像素。
水平和垂直居中,并保持正确的纵横比。可以设置边距。
目前为止,这就是我得到的。
var img = new System.Windows.Controls.Image();
var bi = new BitmapImage(new Uri("C://tmp/original.png", UriKind.RelativeOrAbsolute));
img.Stretch = Stretch.Uniform;
img.Width = 250;
img.Height = 250;
img.Source = bi;
var pngBitmapEncoder = new PngBitmapEncoder();
var stream = new FileStream("C://tmp/test3.png", FileMode.Create);
pngBitmapEncoder.Frames.Add(BitmapFrame.Create(img));
pngBitmapEncoder.Save(stream);
stream.Close();
我知道它还没有使用 Image 对象,因此只是保存图像而不进行缩放。但是我无法保存图像对象。它会出现编译错误,指出无法将“System.Windows.Controls.Image”转换为“System.Uri”。 希望有人能帮助我 :-) 编辑 更新了代码,出现编译错误的版本。只是进行了更改
pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bi));
为了
pngBitmapEncoder.Frames.Add(BitmapFrame.Create(img));
以下是我使用的列表:
using System;
using System.Drawing;
using System.IO;
using System.Windows;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Image = System.Windows.Controls.Image;