Private/Convert-ImageToDataURL.ps1

function Convert-ImageToDataURL {
    [CmdletBinding()]
    [OutputType([string])]
    param (
        [Parameter(Mandatory, Position = 0, ValueFromPipeline)]
        [string]$File
    )
    Convert-FileToDataURL -File $File -DefaultMimeType 'image/png'
}

function Convert-FileToDataURL {
    [CmdletBinding()]
    [OutputType([string])]
    param (
        [Parameter(Mandatory, Position = 0, ValueFromPipeline)]
        [string]$File,

        [Parameter()]
        [string]$DefaultMimeType = 'application/octet-stream'
    )

    if (-not (Test-Path -LiteralPath $File -PathType Leaf)) {
        Write-Error -Exception ([System.IO.FileNotFoundException]::new())
        return
    }

    $FileItem = Get-Item -LiteralPath $File
    $MimeType = switch ($FileItem.Extension) {
        '.jpeg' { 'image/jpeg'; continue }
        '.jpg' { 'image/jpeg'; continue }
        '.png' { 'image/png'; continue }
        '.gif' { 'image/gif'; continue }
        '.webp' { 'image/webp'; continue }
        '.c' { 'text/x-c'; continue }
        '.cpp' { 'text/x-c++'; continue }
        '.cs' { 'text/x-csharp'; continue }
        '.css' { 'text/css'; continue }
        '.doc' { 'application/msword'; continue }
        '.docx' { 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; continue }
        '.go' { 'text/x-golang'; continue }
        '.html' { 'text/html'; continue }
        '.java' { 'text/x-java'; continue }
        '.js' { 'text/javascript'; continue }
        '.json' { 'application/json'; continue }
        '.md' { 'text/markdown'; continue }
        '.pdf' { 'application/pdf'; continue }
        '.php' { 'text/x-php'; continue }
        '.pptx' { 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; continue }
        '.py' { 'text/x-python'; continue }
        '.rb' { 'text/x-ruby'; continue }
        '.sh' { 'application/x-sh'; continue }
        '.tex' { 'text/x-tex'; continue }
        '.ts' { 'application/typescript'; continue }
        '.txt' { 'text/plain'; continue }
        Default { $DefaultMimeType }
    }

    try {
        'data:' + $MimeType + ';base64,' + ([System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes($FileItem.FullName)))
    }
    catch {
        Write-Error -Exception $_.Exception
    }
}