0

我正在尝试使用从剪贴板粘贴的图像,例如屏幕截图。

这是一段代码:

public void PasteImage(Image pasteImage)
{
    MemoryStream image = new MemoryStream();
    pasteImage.Save(image, pasteImage.RawFormat);
    image.Position=0;
    byte[] byteImage = image.ToArray();

在线上:

pasteImage.Save(image, pasteImage.RawFormat);

我收到此错误:

System.Drawing.dll 中出现“System.ArgumentNullException”类型的未处理异常

附加信息:值不能为空。

我正在关注我在这个主题上找到的以前的 stackoverflow 帖子,例如如何使用字节数组比较两个图像,以及如何在字节数组中转换图像,但无法让它工作。

我想知道从剪贴板中检索到的图像是否有特定的内容。我正在使用此代码来获取图像:

    if (Clipboard.ContainsImage())
    {
        Image pasteImage = GetClipboardImage();
        PasteImage(pasteImage);
    }

编辑

这是 GetClipboardImage() 背后的代码:

public Image GetClipboardImage()
        {
            System.Drawing.Image returnImage = null;
            if (Clipboard.ContainsImage())
            {
                returnImage = Clipboard.GetImage();
            }
            return returnImage;
        }

如果我在错误的行上放置一个断点,我可以看到 pasteImage 和 pastImage.RawFormat 都不为空:

在此处输入图像描述

在此处输入图像描述

这看起来与示例相关 我会对此有所了解并报告:如何在不丢失 .NET 中的 alpha 通道的情况下从剪贴板中获取图像?

4

1 回答 1

0

查看 Save Image的MSDN 文章,您可能想尝试:

代替

pasteImage.Save(image, pasteImage.RawFormat);

尝试

pasteImage.Save(image, System.Drawing.Imaging.ImageFormat.RawFormat)
于 2013-06-26T23:26:39.193 回答