You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell将微软计算机视觉Get Thumbnail API返回值转为可用base64

问题解决方法

错误原因

  • 你使用Invoke-RestMethod默认会将二进制图像响应自动按照UTF8编码解码为字符串,后续再用[System.Text.Encoding]::UTF8.GetBytes()转换得到的字节已经不是原始的图像二进制数据,因此生成的base64字符串无效。
  • 你之前填写的img标签data URI前缀为data:image/gif;base64,,但该接口返回的是JPEG格式缩略图,前缀不匹配也会导致显示失败。

可行实现代码

PowerShell 7+ 版本(支持-AsByteStream参数)

$acs_req_headers = @{
    "Ocp-Apim-Subscription-Key" = "...subscriptionkey..."
}
$acs_req_body = @{
    url = "https://...url.../test/test.jpg"
} | ConvertTo-Json

# 直接获取接口返回的原始二进制字节
$imageBytes = Invoke-RestMethod 'https://...url...cognitiveservices.azure.com/vision/v3.2/generateThumbnail?width=100&height=100&smartCropping=true&model-version=latest' `
    -Method 'POST' `
    -Headers $acs_req_headers `
    -Body $acs_req_body `
    -ContentType 'application/json' `
    -AsByteStream

# 转换为base64字符串
$base64Str = [Convert]::ToBase64String($imageBytes)

# 输出到本地文件
$base64Str | Out-File b64str.txt

PowerShell 5.1 版本(无-AsByteStream参数)

$acs_req_headers = @{
    "Ocp-Apim-Subscription-Key" = "...subscriptionkey..."
}
$acs_req_body = @{
    url = "https://...url.../test/test.jpg"
} | ConvertTo-Json
# 临时文件存储接口返回的缩略图
$tempPath = "$env:TEMP\thumb_temp.jpg"

# 将接口返回的二进制内容直接写入临时文件
Invoke-WebRequest 'https://...url...cognitiveservices.azure.com/vision/v3.2/generateThumbnail?width=100&height=100&smartCropping=true&model-version=latest' `
    -Method 'POST' `
    -Headers $acs_req_headers `
    -Body $acs_req_body `
    -ContentType 'application/json' `
    -OutFile $tempPath

# 读取临时文件字节转base64
$imageBytes = Get-Content $tempPath -Encoding Byte
$base64Str = [Convert]::ToBase64String($imageBytes)
$base64Str | Out-File b64str.txt

# 清理临时文件
Remove-Item $tempPath -Force

最终使用格式

生成base64字符串后,按照以下格式拼接即可在HTML中正常显示:

<img src="data:image/jpeg;base64,...base64string..." />

内容的提问来源于stack exchange,提问作者Key Va

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:24:02