问题
I am trying to save image from clipboard to the file path. I have tried below script and it is returning "clipboard does not contain image data".
Add-Type -AssemblyName System.Windows.Forms
if ($([System.Windows.Forms.Clipboard]::ContainsImage())) {
$image = [System.Windows.Forms.Clipboard]::GetImage()
$filename='e:\test\test.png'
[System.Drawing.Bitmap]$image.Save($filename, [System.Drawing.Imaging.ImageFormat]::Png)
Write-Output "clipboard content saved as $filename"
} else {
Write-Output "clipboarsd does not contains image data"
}
As the Clipboard
class can only be used in threads set to single thread apartment (STA) mode.
I have tried to run the script in
powershell -NoProfile -Sta -File $file
Also, I have tried to relaunch if runspace is not STA, this didn't help.
Add-Type -AssemblyName System.Windows.Forms
if ($host.Runspace.ApartmentState -ne "STA") {
"Relaunching"
$file = "./saveImage.ps1"
powershell -NoProfile -Sta -File $file
return
}
回答1:
In PowerShell 5.1 you can use Get-clipboard
get-clipboard -format image
$img = get-clipboard -format image
$img.save("c:\temp\temp.jpg")
this should work too:
Add-Type -AssemblyName System.Windows.Forms
$clipboard = [System.Windows.Forms.Clipboard]::GetDataObject()
if ($clipboard.ContainsImage()) {
$filename='c:\temp\test3.png'
[System.Drawing.Bitmap]$clipboard.getimage().Save($filename, [System.Drawing.Imaging.ImageFormat]::Png)
Write-Output "clipboard content saved as $filename"
} else {
Write-Output "clipboard does not contains image data"
}
来源:https://stackoverflow.com/questions/55215482/save-image-from-clipboard-using-powershell