将BMP转换为内存中的PNG,以便在.Net中粘贴剪贴板

Sen*_*ful 21 .net c# clipboard image-processing in-memory

这个类似问题的答案都需要保存文件.但是,我正在尝试转换文件,然后将其复制到剪贴板.

如何将位图(或任何图像)转换为PNG而不将其保存到文件系统?

更新:
我正在尝试将图像粘贴到应用程序中(在本例中为Evernote).当您将图像复制到剪贴板(例如通过浏览器)时,它会记住它的图像格式,当您将其粘贴时,它将创建具有相同格式的图像.例如,如果您复制PNG,它将粘贴PNG.如果您复制JPG,它将粘贴JPG等.

我正在尝试拍摄当前在剪贴板中的任何图像,将其缩放到我想要的大小,然后将其作为PNG保存在剪贴板中,这样当它粘贴到Evernote时,它将创建一个PNG.

当我在浏览器中复制一个PNG图像,我看到下面的格式:HTML FORMAT,CF_BITMAP,CF_DIB,CF_DIBV5.我不确定这些Evernote中哪一个用于粘贴.我的印象是CF_BITMAP,但在阅读下面的评论后,我猜它正在使用其他格式之一.

如何将图像放在剪贴板中,粘贴时将其视为PNG?

rus*_*sau 29

位图保存到MemoryStream

byte[] result = null;
using (MemoryStream stream = new MemoryStream())
{
    bitmap.Save(stream, ImageFormat.Png);
    result = stream.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

  • 我最好的猜测是`Image result = Image.FromStream(stream);`而不是`result = ...`行.如果您同意,能否请您更新答案? (3认同)