web-dev-qa-db-ja.com

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

私はシェルスクリプトで画像をbase64でエンコードして変数に入れようとしています:

test="$(printf DSC_0251.JPG | base64)"
echo $test
RFNDXzAyNTEuSlBH

私もこのようなことを試してみました:

test=\`echo -ne DSC_0251.JPG | base64\`

しかし、まだ成功していません。

私はこのようなことをしたい:

curl -v -X POST -d '{"image":$IMAGE_BASE64,"location":$LOCATION,"time_created":$TIMECREATED}' -H 'Content-type: text/plain; charset=UTF8' http://192.168.1.1/upload

私はこれを見つけました http://www.zzzxo.com/q/answers-bash-base64-encode-script-not-encoding-right-12290484.html

しかし、まだ成功していません。

78
dash00

ファイル名そのものではなく、 'DSC_0251.JPG'という名前のファイルのcontentsを取得するには、catを使用する必要があります。

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

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

test=$( base64 DSC_0251.JPG )
122
chepner

単一行の結果:

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)"

読み取り可能なデータを取得します。

base64 -d DSC_0251.base64 > DSC_0251.JPG 

参照: http://www.greywyvern.com/code/php/binary2base64

44
Eduardo Cuomo

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

base64 DSC_0251.JPG >DSC_0251.b64

結果を変数に割り当てるには

test=`base64 DSC_0251.JPG`
34
David Jashi

HTMLのBase 64:

file="DSC_0251.JPG"
type=$(identify -format "%m" "$file" | tr '[A-Z]' '[a-z]')
echo "data:image/$type;base64,$(base64 -w 0 "$file")"
3
Andrey Izman

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

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

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

0
Victor Choy

Base64にしてクリップボードに入れるには:

file="test.docx"
base64 -w 0 $file  | xclip -selection clipboard
0
DavidBu