将剪贴板中的位图保存到 wpf 应用程序中的 png

Posted

技术标签:

【中文标题】将剪贴板中的位图保存到 wpf 应用程序中的 png【英文标题】:Saving bitmap from clipboard into png in wpf application 【发布时间】:2019-03-08 13:34:41 【问题描述】:

我需要将位图发送到我的聊天应用程序中,所以我的想法是将它保存到一个临时文件夹中,然后从那里上传它,就像我的拖放图像已经可以工作一样。但是当它在 Windows 文件查看器中保存位图时,我可以看到缩略图,但在其他任何地方它都是空的,知道问题可能出在哪里或如何以更好的方式做到这一点?提前致谢。 这是一个视频,让你更好地理解^^https://youtu.be/p0t2byTRN58

string temp = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName + @"\Luxray\" + @"\clipboardimg.png";
if (File.Exists(temp))

    File.Delete(temp);

BitmapSource bmpSource = Clipboard.GetImage();
MemoryStream ms = new MemoryStream();
FileStream stream = new FileStream(temp, FileMode.Create);
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmpSource));
encoder.Save(stream);
stream.Close();

此代码在 if 语句检查剪贴板内部是否有位图并且在视频中按下 ctrl+v 之后立即运行,它是在弹出带有“img sent”的 msgbox 之后。

【问题讨论】:

【参考方案1】:

你想达到什么目的?如果您尝试将剪贴板图像保存到文件中,则以下代码适用于我:

var img = System.Windows.Forms.Clipboard.GetImage();
img.Save(savePath, ImageFormat.Png);

【讨论】:

awww 太简单了,我不知道我怎么错过了这个解决方案。非常感谢^^。 如果你想要图像中的透明度支持,答案是a bit more complicated。 (另请注意,该答案不是 WPF,而是使用 System.Drawing。)

以上是关于将剪贴板中的位图保存到 wpf 应用程序中的 png的主要内容,如果未能解决你的问题,请参考以下文章

将 WPF 画布保存到文件而不损失质量(不使用位图作为中介)

screen是啥意思

如何将字符串的内容复制到 C# 中的剪贴板? [复制]

如何将字符串的内容复制到 C# 中的剪贴板? [复制]

将位图从 arraylist 保存到 SD 卡 - 保存的文件不可读

ActionScript 3 将位图保存到AS3中的任何内容