Как base64 кодировать изображение в linux bash / shell


Я пытаюсь 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

но до сих пор не имели успеха.

4 62

4 ответа:

вы должны использовать cat для получения содержание файла с именем ' DSC_0251.Формат JPG, а не само имя.

test="$(cat DSC_0251.JPG | base64)"
, base64 можно прочитать из самого файла:
test=$( base64 DSC_0251.JPG )

для этого есть команда Linux:base64

base64 DSC_0251.JPG >DSC_0251.b64

чтобы присвоить результат переменной use

test=`base64 DSC_0251.JPG`

результат одной строки:

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

см.:http://www.greywyvern.com/code/php/binary2base64

база 64 для html:

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