代码之家  ›  专栏  ›  技术社区  ›  Senseful

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

  •  21
  • Senseful  · 技术社区  · 14 年前

    这个 similar question's 所有答案都要求保存文件。但是,我正在尝试转换文件,然后将其复制到剪贴板。

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

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

    我正在尝试获取剪贴板中当前的任何图像,将其缩放到所需的大小,然后将其作为PNG保存在剪贴板中,以便在粘贴到Evernote中时,它将创建PNG。

    在浏览器中复制PNG图像时,可以看到以下格式: HTML FORMAT 我是说, CF_BITMAP 我是说, CF_DIB 我是说, CF_DIBV5 是的。我不确定这些Evernote是用来粘贴的。我的印象是 位图 ,但在阅读了下面的评论之后,我猜它使用了其他格式之一。

    如何在剪贴板中放置粘贴时将被视为PNG的图像?

    1 回复  |  直到 7 年前
        1
  •  29
  •   martijnn2008    7 年前

    保存 Bitmap 给一个 MemoryStream

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