Windows下如何用PowerShell或工具编程写入图片至剪贴板及格式转换?
PowerShell剪贴板图片操作:读取、格式转换与写入替代方案
1. 读取剪贴板中的图片
使用Get-Clipboard -Format Image可直接获取剪贴板内的图片,返回对象类型为System.Drawing.Bitmap:
$clipImage = Get-Clipboard -Format Image
2. 将图片转换为Buffer(字节数组)或Base64字符串
转换为字节数组(Buffer)
借助System.IO.MemoryStream将Bitmap对象转为字节数组,可指定输出图片格式(如Png、Jpeg):
$stream = New-Object System.IO.MemoryStream $clipImage.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png) $imageBuffer = $stream.ToArray() $stream.Dispose()
转换为Base64字符串
基于生成的字节数组,直接调用Convert.ToBase64String()完成转换:
$base64String = [Convert]::ToBase64String($imageBuffer)
一步到位的简化写法:
$clipImage = Get-Clipboard -Format Image $stream = New-Object System.IO.MemoryStream $clipImage.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png) $base64String = [Convert]::ToBase64String($stream.ToArray()) $stream.Dispose()
3. 解决Set-Clipboard不支持图片写入的问题
PowerShell原生Set-Clipboard无直接写入图片的参数,可通过.NET的System.Windows.Forms.Clipboard类实现图片写入:
# 加载必要程序集 Add-Type -AssemblyName System.Windows.Forms # 示例:从本地文件读取图片并写入剪贴板 $image = [System.Drawing.Bitmap]::FromFile("C:\example.png") [System.Windows.Forms.Clipboard]::SetImage($image) $image.Dispose()
若在PowerShell Core环境运行,需先安装
System.Windows.FormsNuGet包再加载程序集。
内容的提问来源于stack exchange,提问作者Huakun Shen
相关产品推荐
相关产品推荐

