将剪贴板中的位图保存到 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 画布保存到文件而不损失质量(不使用位图作为中介)