How to base64 encode image in linux bash / shell How to base64 encode image in linux bash / shell linux linux

How to base64 encode image in linux bash / shell


You need to use cat to get the contents of the file named 'DSC_0251.JPG', rather than the filename itself.

test="$(cat DSC_0251.JPG | base64)"

However, base64 can read from the file itself:

test=$( base64 DSC_0251.JPG )


Encode

On Linux

Single line result:

base64 -w 0 DSC_0251.JPG

For HTML:

echo "data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)"

As file:

base64 -w 0 DSC_0251.JPG > DSC_0251.JPG.base64

In variable:

IMAGE_BASE64="$(base64 -w 0 DSC_0251.JPG)"

In variable for HTML:

IMAGE_BASE64="data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)"

On OSX

On OSX, the base64 binary is different, and the parameters are different. If you want to use it on OSX, you should remove -w 0.

Single line result:

base64 DSC_0251.JPG

For HTML:

echo "data:image/jpeg;base64,$(base64 DSC_0251.JPG)"

As file:

base64 DSC_0251.JPG > DSC_0251.JPG.base64

In variable:

IMAGE_BASE64="$(base64 DSC_0251.JPG)"

In variable for HTML:

IMAGE_BASE64="data:image/jpeg;base64,$(base64 DSC_0251.JPG)"

Generic OSX/Linux

As Shell Function

@base64() {  if [[ "${OSTYPE}" = darwin* ]]; then    # OSX    if [ -t 0 ]; then      base64 "$@"    else      cat /dev/stdin | base64 "$@"    fi  else    # Linux    if [ -t 0 ]; then      base64 -w 0 "$@"    else      cat /dev/stdin | base64 -w 0 "$@"    fi  fi}# Usage@base64 DSC_0251.JPGcat DSC_0251.JPG | @base64

As Shell Script

Create base64.sh file with following content:

#!/usr/bin/env bashif [[ "${OSTYPE}" = darwin* ]]; then  # OSX  if [ -t 0 ]; then    base64 "$@"  else    cat /dev/stdin | base64 "$@"  fielse  # Linux  if [ -t 0 ]; then    base64 -w 0 "$@"  else    cat /dev/stdin | base64 -w 0 "$@"  fifi

Make it executable:

chmod a+x base64.sh

Usage:

./base64.sh DSC_0251.JPGcat DSC_0251.JPG | ./base64.sh

Decode

Get you readable data back:

base64 -d DSC_0251.base64 > DSC_0251.JPG 


There is a Linux command for that: base64

base64 DSC_0251.JPG >DSC_0251.b64

To assign result to variable use

test=`base64 DSC_0251.JPG`