2010-02-05 172 views
1

如果任何人知道的方式,当画面中剪贴板复制检测,然后执行以下时,它发生了,我想知道一个GIF/PNG:转换剪贴板到时剪贴板中包含图片

  • 转换此图片成GIF/PNG
  • 然后放回到该压缩图片到剪贴板

我问其原因,就是我们常贴截图复制到用户并粘贴在Lotus。出于某种原因,将图片直接粘贴到Lotus上可以制作更大的电子邮件,而不是将Paint保存为GIF,从GIF复制,然后粘贴到Lotus中。

我想比剪贴板不会存储像素本身,但字面上知道采取的数据格式的对象。

如果我错了,随时纠正我!

编辑:

读第一个回答后,我的问题是:“我怎么能,每一个画面是在剪贴板时,压缩它,并把它放回剪贴板?”

回答

1

假设这是在Windows上,剪贴板stores the image以非压缩形式。 GIF是一种压缩的图像文件格式,因此它会进行压缩,这就是文件更小的原因。

+0

编辑我的问题:它会那么......我怎么能压缩在飞行中的图片时,它是从剪贴板中取出,并把它放回剪贴板 – BlueTrin 2010-02-05 11:32:03

0

如果您只是在寻找Lotus Notes解决方案,具体取决于您正在运行的是哪个版本的Lotus Notes,那么首选项为“压缩粘贴到文档中的图像”。我想认为在8.0版本,但我可能是错的。除此之外,我不知道你可以使用什么。

我刚刚做了一个测试,将屏幕截图粘贴到电子邮件草稿中,保存的草稿是124KB。将屏幕截图粘贴到Paint中,并将其保存为一个163KB的GIF文件。

+0

编辑:祝我们的莲花车队将更新客户端,我们仍然在这里使用Lotus:( – BlueTrin 2010-02-17 14:49:24

0

我使用下面的C#程序用于类似的目的。它将剪贴板保存到PNG文件中。然后我通过Gmail或其他方式上传文件。

class Clip2Png { 
[System.STAThread] 
public static void Main(string[] args) { 
    if (args.Length != 1) { 
     System.Console.WriteLine("Usage: clip2png filename"); 
     return; 
    } 

    System.Windows.Forms.IDataObject lData = System.Windows.Forms.Clipboard.GetDataObject(); 
    if (lData == null || !lData.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap)) { 
     System.Console.WriteLine("No image in clipboard"); 
     return; 
    } 

    System.Drawing.Image image = (System.Drawing.Image) 
      lData.GetData(System.Windows.Forms.DataFormats.Bitmap, true); 
    image.Save(args[0], System.Drawing.Imaging.ImageFormat.Png); 
} 
} 
+0

编辑,它会非常接近我想要的,除非我想将它放回剪贴板,你知道我该怎么做吗? – BlueTrin 2010-02-17 14:50:08

+0

请参阅@unwind answer - 剪贴板存储DIB图像,它是应用程序定义了如何处理剪贴板 - 例如,我的应用程序将其作为PNG文件存储为最后一步 – agsamek 2010-02-17 15:37:27

+0

Lotus将其作为未压缩的图像附加到它 您可以粘贴剪贴板的内容作为GIF从任何应用程序到Lotus?我不这么认为。相反,您可以附加一个来自hdd的GIF文件,在这种情况下,Lotus会将其作为GIF存储在电子邮件中。 – agsamek 2010-02-17 15:43:40