perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg
Evitará ter que usar qualquer intermediário (seja uma variável ou um arquivo temporário) e armazenará o arquivo decodificado de volta no arquivo jpeg original.
Eu tenho um arquivo que contém dados de imagem codificados em base64: ~ / dog / 1.jpg
Eu coloquei lá via SSH, e a base 64 codificou os dados para que fosse seguro transferir no terminal. Suponha que os dados da imagem base64 não estejam corrompidos.
Agora que tenho os dados da imagem passados para o outro servidor, preciso decodificar o conteúdo do arquivo e, em seguida, substituir o arquivo codificado pelo arquivo decodificado.
E eu não posso usar o comando base64 como não está disponível no servidor remoto.
Como eu posso decodificar base64 conteúdo do arquivo e, em seguida, substituir o conteúdo do arquivo codificado com o conteúdo decodificado, de preferência usando perl?
Isto é o que eu tenho agora ...
# Decode image data
poo=$(cat ~/dog/1.jpg | perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)');
# Write decoded data to file
echo $poo >| ~/dog/1.jpg
Isso substitui o arquivo, mas não decodifica corretamente a imagem.