Как сохранить изображение с его исходной кодировкой?
Кажется, что единственный способ сохранить изображение - использовать BitmapEncoder, но я не знаю, как я могу получить правильный формат из изображения.
Пример:
Clipboard.GetImage() возвращает InteropBitmap, который, похоже, не содержит никакой информации об исходном формате.
Я также пробовал использовать метод расширения:
public static void Save(this BitmapImage image, System.IO.Stream stream)
{
var decoder = BitmapDecoder.Create(image.StreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var encoder = BitmapEncoder.Create(decoder.CodecInfo.ContainerFormat);
foreach (var frame in decoder.Frames)
{
encoder.Frames.Add(BitmapFrame.Create(frame));
}
encoder.Save(stream);
}
но проблема в том, что
- ImageSource не всегда является файлом BitmapImage (Clipboard.GetImage()) и
- image.StreamSource может быть пустым в некоторых случаях (кажется, когда изображение загружается через относительный Uri)
Любые предложения?