GNU/Linux >> Linux の 問題 >  >> Linux

Linux bash/シェルで画像をbase64エンコードする方法

端末からの入力が必要な場合は、これを試してください

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

-n オプションは base64 コマンドに "\n" 文字を入力しません。


そのための Linux コマンドがあります:base64

base64 DSC_0251.JPG >DSC_0251.b64

結果を変数に代入するには

test=`base64 DSC_0251.JPG`

エンコード

Linux の場合

単一行の結果:

base64 -w 0 DSC_0251.JPG

HTML の場合 :

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

ファイルとして:

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

変数内:

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

HTML の変数内 :

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

OSX の場合

OSX の場合 、base64 バイナリが異なり、パラメータが異なります。 OSX で使用する場合 、 -w 0 を削除する必要があります .

単一行の結果:

base64 DSC_0251.JPG

HTML の場合 :

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

ファイルとして:

base64 DSC_0251.JPG > DSC_0251.JPG.base64

変数内:

IMAGE_BASE64="$(base64 DSC_0251.JPG)"

HTML の変数内 :

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

一般的な OSX/Linux

シェル関数として

@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

シェル スクリプトとして

base64.sh を作成 次の内容のファイル:

#!/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

実行可能にします:

chmod a+x base64.sh

使い方:

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

デコード

読み取り可能なデータを取り戻す:

base64 -d DSC_0251.base64 > DSC_0251.JPG 

cat を使用する必要があります コンテンツを取得する ファイル名自体ではなく、「DSC_0251.JPG」という名前のファイルの。

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

ただし、base64 ファイル自体から読み取ることができます:

test=$( base64 DSC_0251.JPG )

Linux
  1. LinuxでBashの履歴をクリアする方法

  2. Bashシェルスクリプトで文字列を比較する方法

  3. Linuxでシェルを変更する方法

  1. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  2. Linux で制限付き Bash シェルを構成する方法

  3. 方法:無制限の Bash/シェル履歴?

  1. Linuxで画像メタデータを表示する方法

  2. LinuxでBashプロンプトを短縮する方法は?

  3. cronシェルを変更する方法(shからBash)?