Last active
July 14, 2024 03:41
-
-
Save pferreirafabricio/97c1c68057e406ff0f98840659973f0d to your computer and use it in GitHub Desktop.
🖼 Convert an image to a Base64 string with PowerShell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
OBS: | |
The AsByteStream parameter was introduced in Windows PowerShell 6.0 | |
If your PowerShell version (run `(Get-Host).Version` to find out) is lower than 6 then use the version for Powershell 5.1: | |
#> | |
$pathToImage = "/home/user/development/image.png" | |
# For Powershell 5.1 | |
[String]$base64 = [convert]::ToBase64String((Get-Content $pathToImage -Raw -Encoding Byte)) | |
# For Powershell 6+ | |
[String]$base64 = [convert]::ToBase64String((Get-Content $pathToImage -Raw -AsByteStream)) | |
Write-Output $base64 |
@pr0toc01 Thank you for pointing this out! The gist was updated!
Performance comparison
I used this script to measure: Time.ps1
Powershell Core (6+)
Without -Raw
flag:
Days : 0
Hours : 0
Minutes : 0
Seconds : 1
Milliseconds : 262
Ticks : 12621640
TotalDays : 1.46083796296296E-05
TotalHours : 0.000350601111111111
TotalMinutes : 0.0210360666666667
TotalSeconds : 1.262164
TotalMilliseconds : 1262.164
With -Raw
flag:
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 22
Ticks : 227180
TotalDays : 2.62939814814815E-07
TotalHours : 6.31055555555556E-06
TotalMinutes : 0.000378633333333333
TotalSeconds : 0.022718
TotalMilliseconds : 22.718
Powershell Windows
Without -Raw
flag:
Days : 0
Hours : 0
Minutes : 0
Seconds : 1
Milliseconds : 502
Ticks : 15026649
TotalDays : 1.73919548611111E-05
TotalHours : 0.000417406916666667
TotalMinutes : 0.025044415
TotalSeconds : 1.5026649
TotalMilliseconds : 1502.6649
With -Raw
flag:
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 36
Ticks : 363624
TotalDays : 4.20861111111111E-07
TotalHours : 1.01006666666667E-05
TotalMinutes : 0.00060604
TotalSeconds : 0.0363624
TotalMilliseconds : 36.3624
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You might consider adding the switch -Raw for better performance
Powershell 5.1
[String]$base64 = [convert]::ToBase64String((Get-Content $transactionImage.FullName -Raw -Encoding Byte))
Powershell 6+
[String]$base64 = [convert]::ToBase64String((Get-Content $pathToImage -Raw -AsByteStream))