У меня есть файл, содержащий данные изображения в кодировке base64: ~/dog/1.jpg
Я поместил его туда через SSH, и base64 закодировал данные, чтобы их можно было безопасно передавать в терминале. Предположим, что данные изображения base64 не повреждены.
Теперь, когда данные изображения переданы на другой сервер, мне нужно декодировать содержимое файла, а затем перезаписать закодированный файл декодированным файлом.
И я не могу использовать команду base64, так как она недоступна на удаленном сервере.
Как можно декодировать содержимое файла base64, а затем перезаписать закодированное содержимое файла декодированным содержимым, желательно с помощью Perl?
Вот что у меня сейчас есть...
# 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
Это приведет к перезаписи файла, но не позволит правильно декодировать изображение.
решение1
perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg
Позволяет избежать необходимости использования каких-либо посредников (будь то переменная или временный файл) и сохраняет декодированный файл обратно в исходный файл JPEG.