Eu escrevi este script para você:
$img = Get-Clipboard -Format Image
If (-not $img) {Throw 'No image on the clipboard'}
$ms = New-Object System.IO.MemoryStream
$img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
$ms.Position = 0
Add-Type -AssemblyName System.Net.Http
$httpClientHandler = New-Object System.Net.Http.HttpClientHandler
$httpClient = New-Object System.Net.Http.HttpClient $httpClientHandler
$contentDispositionHeaderValue = New-Object System.Net.Http.Headers.ContentDispositionHeaderValue "form-data"
$contentDispositionHeaderValue.Name = "file"
$contentDispositionHeaderValue.FileName = 'image.png'
$streamContent = New-Object System.Net.Http.StreamContent $ms
$streamContent.Headers.ContentDisposition = $contentDispositionHeaderValue
$streamContent.Headers.ContentType = New-Object System.Net.Http.Headers.MediaTypeHeaderValue 'image/png'
$content = New-Object System.Net.Http.MultipartFormDataContent
$content.Add($streamContent)
$response = $httpClient.PostAsync('https://stackoverflow.com/upload/image?https=true', $content).Result
$response.Content.ReadAsStringAsync().Result -match '"(.*)"' | Out-Null
"![]($($matches[1]))"
Primeiro, ele converte a imagem na área de transferência para PNG. Em seguida, ele aproveita algumas classes de utilitário da Web do .NET para obter as multipart/form-data
estrutura montada corretamente - esta seção é adaptada de Publicação do blog de Mario Majčica . Uma vez que tudo é finagled, faz o pedido POST. Finalmente, ele usa o regex para analisar o pequeno documento HTML resultante para extrair o URL da imagem recém-carregada, que é impressa no console. Se você quiser copiar o fragmento Markdown diretamente para a área de transferência, coloque | scb
na última linha.
Para executar o script, salve-o como um arquivo .ps1
, por exemplo %código%. Se ainda não o fez, siga as instruções na seção Habilitando Scripts do wiki de tags do PowerShell . Em seguida, você pode abrir um prompt do PowerShell na pasta que o contém e executá-lo:
.\seimage.ps1