public/UploadStream.ps1

<#
.SYNOPSIS
    Function to upload a file to ImgBB.com via the API
.DESCRIPTION
    Converts an image to base64 and uploads it to ImgBB.com via the API
.NOTES
    Information or caveats about the function e.g. 'This function is not supported in Linux'
.LINK
    https://api.imgbb.com/
.EXAMPLE
    _UploadImage -ApiKey '1234567890' -Image 'C:\Temp\image.png'
    Uploads the image to ImgBB.com and returns the URL
.EXAMPLE
    _UploadImage -ApiKey '1234567890' -Image 'C:\Temp\image.png' -OpenInBrowser
    Uploads the image to ImgBB.com, returns the URL and opens it in the default browser
#>


Function _UploadStream {
    Param(
        [byte[]]$Image,
        [String]$key,
        [Switch]$OpenInBrowser
    )
    $Form = @{
        image = [convert]::ToBase64String($image)
    } 
    try {
        $response = Invoke-RestMethod -Method POST `
        -Uri ("https://api.imgbb.com/1/upload?key={0}&Name={1}" -f $Key,$Env:COMPUTERNAME+"-"+(Get-Date -Format "MM-dd-yyyy-HH:mm")) -Body $Form
    }
    catch {
        $_.Exception.Response
    }
    $output = [PSCustomObject]@{
        Image = $response.data.display_url
        ShortURL = $response.data.url_viewer
        DeleteURL = $response.data.delete_url
        ThumbnailURL = $response.data.thumb.url
        MediumURL = $response.data.medium.url
    }
    if ($OpenInBrowser) {
        Start-Process $output.Image
    }
    return $output
}