GNU/Linux >> Tutoriels Linux >  >> Linux

Comment encoder une image en base64 dans Linux bash / shell

Si vous avez besoin d'une entrée de termial, essayez ceci

lc=`echo -n "xxx_${yyy}_iOS" |  base64`

-n l'option n'entrera pas le caractère "\n" dans la commande base64.


Il existe une commande Linux pour cela :base64

base64 DSC_0251.JPG >DSC_0251.b64

Pour affecter le résultat à la variable use

test=`base64 DSC_0251.JPG`

Encoder

Sous Linux

Résultat sur une seule ligne :

base64 -w 0 DSC_0251.JPG

Pour HTML :

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

En tant que fichier :

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

Dans la variable :

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

Dans variable pour HTML :

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

Sur OSX

Sur OSX , le base64 binaire est différent et les paramètres sont différents. Si vous voulez l'utiliser sur OSX , vous devez supprimer -w 0 .

Résultat sur une seule ligne :

base64 DSC_0251.JPG

Pour HTML :

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

En tant que fichier :

base64 DSC_0251.JPG > DSC_0251.JPG.base64

Dans la variable :

IMAGE_BASE64="$(base64 DSC_0251.JPG)"

Dans variable pour HTML :

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

OSX/Linux générique

En tant que fonction Shell

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

# Usage
@base64 DSC_0251.JPG
cat DSC_0251.JPG | @base64

En tant que script shell

Créer base64.sh fichier avec le contenu suivant :

#!/usr/bin/env bash
if [[ "${OSTYPE}" = darwin* ]]; then
  # OSX
  if [ -t 0 ]; then
    base64 "[email protected]"
  else
    cat /dev/stdin | base64 "[email protected]"
  fi
else
  # Linux
  if [ -t 0 ]; then
    base64 -w 0 "[email protected]"
  else
    cat /dev/stdin | base64 -w 0 "[email protected]"
  fi
fi

Rendez-le exécutable :

chmod a+x base64.sh

Utilisation :

./base64.sh DSC_0251.JPG
cat DSC_0251.JPG | ./base64.sh

Décoder

Récupérez vos données lisibles :

base64 -d DSC_0251.base64 > DSC_0251.JPG 

Vous devez utiliser cat pour obtenir le contenu du fichier nommé 'DSC_0251.JPG', plutôt que le nom du fichier lui-même.

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

Cependant, base64 peut lire à partir du fichier lui-même :

test=$( base64 DSC_0251.JPG )

Linux
  1. Comment raccourcir l'invite Bash sous Linux ?

  2. Comment changer le shell Cron (sh en bash) ?

  3. Comment comparer des chaînes dans les scripts shell bash

  4. Comment changer de shell sous Linux

  5. Comment configurer le shell bash restreint sous Linux

Comment utiliser la commande Declare dans Linux Bash Shell

Comment installer Linux Bash Shell sur Windows 10

Comment changer un shell d'utilisateurs sous Linux

Comment installer et utiliser Nu Shell sous Linux

Bash Scripting :comment générer et formater du texte sur le shell Linux

Comment utiliser Linux Bash Shell dans Windows 10 ?