Черное изображение при сохранении PNG из буфера обмена - PullRequest
4 голосов
/ 21 июля 2011

Я пытаюсь сохранить изображение в формате PNG, которое было скопировано в буфер обмена, но оно либо получается сплошным черным, либо черным вокруг областей, которые должны быть прозрачными.

Вот кодЯ использую для захвата и сохранения изображения

var clipboardImage = (InteropBitmap)Clipboard.GetImage();

Image.SaveImage(clipboardImage, Path.Combine(Config.App.ApplicationDataImagesPath, string.Format("{0}.{1}", imageId, "png")));

public static void SaveImage(BitmapSource bitmapImage, string filename)
{
    using (var fileStream = new FileStream(filename, FileMode.Create))
    {
        var pngBitmapEncoder = new PngBitmapEncoder();
        pngBitmapEncoder.Frames.Add(BitmapFrame.Create(bitmapImage));
        pngBitmapEncoder.Save(fileStream);
        fileStream.Close();
        fileStream.Dispose();
    }           
}

У кого-нибудь есть идеи, почему он не сохранит альфа-каналы PNG?

Спасибо

Дан

Редактировать: я должен упомянуть, что при копировании изображения из Internet Explorer 9 возникали черные изображения. Отлично работает при копировании изображения из Chrome или Firefox.Есть ли обходные пути для проблемы IE9?

1 Ответ

3 голосов
/ 21 июля 2011

Что произойдет, если просто сделать это:

Clipboard.GetImage().Save ("XXX.png", System.Drawing.Imaging.ImageFormat.Png);

РЕДАКТИРОВАТЬ - для WPF попробуйте это:

public static void SaveClipboardImageToFile(string filePath)
{
    var image = Clipboard.GetImage();
    using (var fileStream = new FileStream(filePath, FileMode.Create))
    {
        BitmapEncoder encoder = new PngBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(image));
        encoder.Save(fileStream);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...