Привет, я пытаюсь масштабировать изображение 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 еще не используется, и поэтому просто сохраняет изображение, не масштабируя его. Но у меня проблемы с сохранением объекта Image. Выдает ошибку компиляции: невозможно конвертировать из 'System.Windows.Controls.Image' в 'System.Uri'
Надеюсь, кто-нибудь может мне помочь: -)
EDIT
Обновлен код до версии с ошибкой компиляции. только что изменилось
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;