将剪贴板中的图像转换为JPEG

我想出了如何使用PowerShell脚本复制Excel工作表中的范围。 我将这个输出写入一个variables,以便稍后将其转换为JPEG。 我已经完成了Excel应用程序和Windows.Forms.Clipboard方法( GetImage() )。

现在我的问题是如何将我的当前剪贴板转换为PowerShell脚本中的JPEG。

我不可能用保存方法来转换剪贴板。 我最后的命令是这样的:

  1. $clipboard.Save("C:\Data\picture.jpeg")
  2. $clipboard.Save(("C:\Data\picture.jpeg", "jpeg"))
  3. $clipboard.Save("C:\Data\picture.jpeg", "jpeg")

这三个解决scheme都没有工作。 我总是得到这个variables为的错误。

在工作中,我也不允许使用PowerShell版本5.因此,我也无法使用cmdlet Get-ClipboardSet-Clipboard

我知道可以将剪辑粘贴到绘图中,然后手动保存,但我不想单独执行此操作,而是使用PowerShell脚本。

使用[System.Windows.Forms.Clipboard::GetImage()从剪贴板中获取图像,然后使用正确的格式参数调用图像对象的Save()方法:

 Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $file = 'C:\path\to\output.jpg' if ([Windows.Forms.Clipboard]::ContainsImage()) { $img = [Windows.Forms.Clipboard]::GetImage() $img.Save($file, [Drawing.Imaging.ImageFormat]::Jpeg) } else { Write-Warning 'No image in clipboard.' } 

请注意,对于剪贴板访问工作,您必须在STA模式下运行(单线程公寓):

注意
剪贴板类只能在设置为单线程单元(STA)模式的线程中使用。 要使用这个类,请确保您的Main方法标记为STAThreadAttribute特性。