Как сериализовать систему. Рисование в поток в c #? - PullRequest
0 голосов
/ 29 марта 2011

У меня есть объект Image, img, и мне нужно сохранить его в потоке памяти.

Метод сохранения имеет такую ​​подпись:

Image.Save (Stream, ImageCodecInfo, EncoderParameters)

но я не знаю, что я должен предоставить в параметрах 2 и 3.

Я обошёл проблему, используя сериализацию BinaryFormmater, но я хотел бы использовать наиболее подходящий метод.

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Существует более простая перегрузка: Image.Save(Stream, ImageFormat). Второй параметр позволяет выбрать формат, в котором вы хотите сохранить изображение, например BMP, PNG или JPEG.

image.Save(stream, ImageFormat.Bmp); // if you need to access the pixels, perhaps
image.Save(stream, ImageFormat.Png); // lossless compression (good for drawings)
image.Save(stream, ImageFormat.Jpeg); // lossy but powerful compression (good for photos)
1 голос
/ 29 марта 2011

Эта ссылка содержит необходимую информацию. На этой странице они перечисляют это как самый простой способ получить ImageCodecInfo:

public static ImageCodecInfo FindEncoder(ImageFormat format) { 
    if (format == null)
        throw new ArgumentNullException("format");

    foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders()) {
        if (codec.FormatID.Equals(format.Guid)) {
            return codec;
        }
    }

    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...